我有这段代码,但这段代码不允许我上传任何类型的视频文件。 这始终显示“请选择要上传的文件”。
上传文件的代码如下所示:
$fileElementName = 'ufile';
if (!empty($_FILES[$fileElementName]['error'])) {
switch ($_FILES[$fileElementName]['error']) {
case '1':
$error = 'You Are Not Allowed To Upload File Of This Size';
break;
case '2':
$error = 'You Can Not Not Upload File Of This Size';
break;
case '3':
$error = 'The uploaded file was only partially uploaded';
break;
case '4':
$error = 'Not Able To Upload';
break;
case '6':
$error = 'Server Error Please Try Again Later';
break;
case '7':
$error = 'Failed to write file to disk';
break;
case '8':
$error = 'File upload stopped by extension';
break;
case '999':
default:
$error = 'Error Found But Did Not Found What Was Problem';
}
} elseif (empty($_FILES['ufile']['tmp_name']) || $_FILES['ufile']['tmp_name'] == 'none') {
$error = 'Please Select File To Upload';
$success = FALSE;
} else {
$file = $_FILES['ufile']['name'];
move_uploaded_file($_FILES["ufile"]["tmp_name"], $path);
}
echo json_encode($arr);
在上面的代码中,$ path是upload /哪个是正确的 - 它适用于除视频之外的所有文件。
此代码始终显示“请选择要上传的文件”
答案 0 :(得分:1)
您的错误处理已损坏。在上传时,成功上传的错误代码为0(UPLOAD_ERR_OK
常量)。你在做什么
if (!empty(...))
对于零值,
empty()计算为布尔值TRUE,所以你基本上说“如果没有错误,就像有一个错误一样”。
您的代码应该是:
if ($_FILES['ufile']['error'] !== UPLOAD_ERR_OK) {
... error handling switch() here ...
die();
}
您对tmp_name
的后续空()检查也毫无意义。如果没有上传文件,那么无论如何你都会得到错误代码4(UPLOAD_ERR_NO_FILE
)。
然后对于move_uploaded_file()内容,您将上传的文件名提取到$file
,然后将文件移动到$path
,这不会在代码中的任何位置设置。作为警告,永远不要在文件系统操作中直接使用用户提供的文件名。在该字段中嵌入路径信息是微不足道的,如果您没有采取适当的清理/安全预防措施,您将允许恶意用户在您服务器上的任何文件上涂鸦。
答案 1 :(得分:0)
检查权限,如果存在$ path等,并将move_uploaded_file更改为要复制,则某些服务器对文件夹具有限制权限
编辑:也许是同一个问题https://stackoverflow.com/a/3587158/1519436
答案 2 :(得分:0)
您是否定义了表单的enctype?
在表单标签中插入enctype如下:enctype =“multipart / form-data”