我正在尝试将 Uploadify v2.1.4 与 Codeigniter v2.1 一起使用。我知道 flash 存在问题,没有将会话数据发送到控制器,这在 codeigniter 中返回 http 302 错误而不是上传脚本。
我见过各种解决方案,但它们都适用于旧版本的框架,特别是 codeigniter。有没有人找到最近的解决方案将 uploadify 与 CI 集成?我可以通过将上传脚本放在 CI 目录之外来让脚本工作,但我想利用 CI 功能,所以这对我来说不是一个好的解决方案。
确认我收到的错误消息是“HTTP 302”...即禁止 uploadify 脚本访问 /a/reports/uploadify
这是jquery
$(document).ready(function() {
$('#file_upload').uploadify({
'uploader' : '/swf/uploadify.swf',
'script' : '/a/reports/uploadify',
'cancelImg' : '/img/cancel.png',
'folder' : '/uploads/originals',
'auto' : true,
'fileExt' : '*.jpg;*.pdf;*.doc',
'fileDesc' : 'jpg, pdf or doc',
'hideButton': false,
'removeCompleted':false
});
我的任何控制器
class Reports extends MY_Controller
{
public function uploadify()
{
log_message('info','uploadify method being called');
if (!empty($_FILES)) {
$tempFile = $_FILES['Filedata']['tmp_name'];
$targetPath = $_SERVER['DOCUMENT_ROOT'] . $_REQUEST['folder'] . '/';
$targetFile = str_replace('//','/',$targetPath) . $_FILES['Filedata']['name'];
log_message('info', 'File Upload: Temp file created '.$tempFile);
log_message('info', 'File Upload: Target path for upload '.$targetPath);
log_message('info', 'File Upload: Target file for upload '.$targetFile);
$fileTypes = str_replace('*.','',$_REQUEST['fileext']);
$fileTypes = str_replace(';','|',$fileTypes);
$typesArray = split('\|',$fileTypes);
$fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$typesArray))
{
move_uploaded_file($tempFile,$targetFile);
echo str_replace($_SERVER['DOCUMENT_ROOT'],'',$targetFile);
}
else
{
log_message('error', 'File Upload: Invalid file type uploaded ['.$fileParts['extension'].']');
echo 'Invalid file type.';
}
}
}
}
最终我找到了这个解决方案。不是最好的,但仍然是一个很好的解决方法。