A-A+

关于Yii与SWFUpload多文件上传的常见问题

2011年10月19日 YIIFramework, 程序研究 评论 6 条 阅读 5,704 次
如果您有代购或者代维服务器、PHP网站建设、程序代码修改、系统开发等需求,可以联系我购买付费服务。QQ 379880222

1. SWFUpload Flash与Yii Cookie的问题.

按照SWFUpload官方文档中的说明,
由于Flash中FileReference的Bug,导致当前浏览器中的Cookie并不会随着Flash请求一起发送,Yii无法通过Session
检测上传者的用户识别信息,SWFUpload 将提示302错误的信息,解决办法在入口文件index.php中加入
if(isset($_POST['PHPSESSID'])) $_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];
例如:

$yii = dirname(__FILE__) . '/../framework/yii.php';
...
if(isset($_POST['PHPSESSID']))
$_COOKIE['PHPSESSID'] = $_POST['PHPSESSID'];
require_once($yii);
Yii::createWebApplication($config)->run();

2. SWFUpload 500服务器错误原因

这个原因主要是有两个,一个是Yii 安全权限的原因,另一个就是上传的保存路径不对或处理缩略图时出错,才会出现这个错误.

如果是安全权限的问题,需要在你的控制器中加入, ajaxUploadFiles更改成你自己的文件上传方法处理
'accessControl - ajaxUploadFiles',

/**
* 使用RightsFilter过滤器控制访问权限
*
* @see CController::filters()
*/
public function filters() {
return array(
'accessControl - ajaxUploadFiles',
'auth',
);
}

3. SWFUpload 开发调式.

SWFUpload提供了一个 'debug'=>false 选项, 打开将在你的页面左下解出现一个调试的信息,对于开发中非常有帮助,你可以看到整个上传过程的信息, 在Yii 控制器方法使用echo 输出到这个Swfupload控制台.

标签:

6 条留言  访客:4 条  博主:2 条

  1. avatar 潇雨

    来学习。。。

  2. avatar Virginia

    博主太有才了!我学习了

  3. avatar liaojinrong

    直接不显示是什么原因?

    • avatar 恋香缘

      你是说不显示swfupload的那个flash吗?

      • avatar liaojinrong

        是的,什么都没有,也保证了那个hander.js文件的路径正确

        • avatar 恋香缘

          检查一下swfupload配置中的容器id是否正确。好像是叫place_holder。

给我留言