0

我有这段代码,但这段代码不允许我上传任何类型的视频文件。这总是显示“请选择要上传的文件”。

上传文件代码如下:

$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/ 是正确的——它适用于除视频之外的所有文件。

此代码始终显示“请选择要上传的文件”

4

3 回答 3

1

您的错误处理已损坏。在上传时,成功上传的错误代码为 0(UPLOAD_ERR_OK常量)。你正在做的

if (!empty(...))

对于零值,empty() 评估为布尔值 TRUE,因此您基本上是在说“如果没有错误,就表现得像有错误一样”。

你的代码真的应该是:

if ($_FILES['ufile']['error'] !== UPLOAD_ERR_OK) {
    ... error handling switch() here ...
    die();
}

您随后对 的 empty() 检查tmp_name也毫无意义。如果没有上传文件,那么UPLOAD_ERR_NO_FILE无论如何您都会收到错误代码 4 ( )。

然后对于 move_uploaded_file() 东西,您将上传的文件名提取到$file中,然后将文件移动到$path,这在您的代码中的任何位置都没有设置。作为警告,永远不要在文件系统操作中直接使用用户提供的文件名。在该字段中嵌入路径信息是微不足道的,如果您不采取适当的清理/安全预防措施,您将允许恶意用户在您服务器上的任何文件上乱涂乱画。

于 2012-07-13T17:21:36.877 回答
0

检查权限,如果 $path 存在等,并将 move_uploaded_file 更改为复制,某些服务器对文件夹具有限制权限

编辑:也许同样的问题https://stackoverflow.com/a/3587158/1519436

于 2012-07-13T16:48:15.877 回答
0

您是否定义了表单的编码类型?

在表单标签中插入 enctype 如下: enctype="multipart/form-data"

于 2012-07-13T16:50:37.280 回答