uploadify 跨域上传实现
程序员文章站
2022-05-25 18:29:15
...
使用环境: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
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
下一篇: 环境变量