【发布时间】:2023-03-09 19:50:01
【问题描述】:
好的,这是一个艰难的问题,我已经花了几个小时寻找解决方案/问题。我正在使用 SWFUpload 上传图像而不重新加载页面(也有一个花哨的进度条),当我在本地主机(Wamp 服务器)上时这工作正常,但是当我尝试在我的真实 linux 服务器上这样做时它会发疯(据我所知,这是唯一可能的标志),它正在运行 Apache2 和 PHP5。正如我所说,前端很好(也许除了它是闪存的事实)。 后端代码如下:
SWFUpload_settings.js
var swfu_settings ={upload_url : "upload.php",
flash_url : "flash/swfupload.swf",
button_placeholder_id : "upload_flash",
file_size_limit : "2 MB",
file_types : "*.gif;*.jpg;*.png",
file_post_name : "Filedata",
file_queue_limit : 1,
post_params : {
"PHPSESSID" : getCookie()
},
upload_start_handler : upload_start,
upload_error_handler : upload_error,
upload_complete_handler : upload_complete,
upload_progress_handler : upload_progress,
file_queued_handler : file_queued,
button_disabled : false,
button_width : 120,
button_height : 22,
button_text : '<div class="adm_upload">Select image</div>',
button_text_style : '.adm_upload{color:#ff0000;}'
};
上传.php
function manageUpload(){
if( isset($_FILES['Filedata']) ){
$dest_dir = $_SERVER[DOCUMENT_ROOT]."/images/products";
$destination = $_SERVER[DOCUMENT_ROOT]."/images/products/" . $_FILES['Filedata']['name'];
if( is_dir($dest_dir) ){
if( is_writable($dest_dir) ){
if( !move_uploaded_file($_FILES['Filedata']['tmp_name'], $destination ) ){
$html_body = '<h1>File upload error!</h1>';
switch ($_FILES['Filedata']['error']) {
case 1:
$html_body .= 'The file is bigger than this PHP installation allows';
break;
case 2:
$html_body .= 'The file is bigger than this form allows';
break;
case 3:
$html_body .= 'Only part of the file was uploaded';
break;
case 4:
$html_body .= 'No file was uploaded';
break;
default:
$html_body .= 'unknown errror';
}
echo ($html_body);
}
}
else{
echo "Says it's not writable: ".$dest_dir;
}
}
else{//not a directory?
echo "Says it's not a directory:".$dest_dir;
}
}
else{
echo "No file POSTED.\n";
}
}
我得到的唯一错误来自 $_FILES['Filedata']['error'] = 3, 'Only part of the file was uploaded'。目标目录确实有 777 权限,你可以看到我做了必要的检查。它根本行不通,我不知道为什么。此外,我尝试上传的文件的文件名中没有空格,因此不适合 SWFUpload 的问题 206。
据我所知,这可能是由于前端 SWFUpload 或后端服务器配置所致。请帮忙。
附:无需提及安全性,无论如何,这仅允许具有外部访问权限的服务器管理员使用,而且他可以选择的文件(图像)有前端限制。没有必要进一步保护它。
【问题讨论】:
-
您上传的文件有多大?也这样做:>
echo ini_get("upload_max_filesize"); -
我试过的大约是 200kB。好的,我现在试试,谢谢。
-
错误号
3是在上传被某种方式中断时发生的。 -
问题如何 :(
标签: php linux flash file-upload swfupload