当前位置: 代码迷 >> Web前端 >> uploadify 跨域上传兑现
  详细解决方案

uploadify 跨域上传兑现

热度:597   发布时间:2012-08-13 13:21:53.0
uploadify 跨域上传实现
使用环境:Win2003+php+iis+FlashPaper  (www.a.com)
FlashPaper (下载安装)使用FlashPaper可打印文档->swf文件格式
C:\\flashpaper.bat
{
D:\awnueeqfdnt\FlashPaper\FlashPaper2.2\FlashPrinter.exe %1 -o %2
}
upload.php
{
$source_file  // 原文件路径
$convert_file // 转换文件
$bat_url = "C:\\flashpaper.bat";
$command = "$bat_url $source_file  $convert_file";
exec($command);
echo {json};  // 返回json 数据
}
采用方案: 配置安全策略文件(crossdomain.xml),将其放在根目录。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cross-domain-policy SYSTEM  "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" >
<cross-domain-policy> 
    <site-control permitted-cross-domain-policies="all" /> 
    <allow-access-from domain="*" /> 
    <allow-http-request-headers-from domain="*" headers="*"/>
</cross-domain-policy>
表示该服务允许任何外域来访问。


使用环境:php+nginx  (www.b.com)
jquery uploadify 异步跨域实现(不同域名都可实现),解诉www.a.com返回的json信息


问题1
文件上传后FlashPaper不能进行转换。最终查找出,以本机账户测试可以生成swf文件。在iis应用程序池->属性->标识->预定义账户,原以(网络服务)改成(本地系统) 变可。

问题2
(自动打印无法识别这类文件),要打印这个文件,先用合适的程序打开它,再用Macromedia FlashPaper打印机将其打印,FlashPaper是将可打印的文档输出为swf文件格式,在FlashPaper服务端也必须要有相应可打开源文件的软件。

问题3
测试过程中出现 uploadify io error  末解

问题4
当上传图片时出现 HTTP ERROR 302 错误, 这是服务端需要登录验证,而客户端uploadify 并没有把 cookie 中的 sessionId  发送给服务器
所以出现302错误
解决方法:
客户端发sessionId 做参数发送给服务端
'scriptData':{'PHPSESSID':'$sessionId'}
服务端
if(isset($_GET['PHPSESSION'])){
session_id($_GET['PHPSESSION']);
}
session_start();



查看文档:http://www.phptogether.com/uploadifydoc/onerror.html