视频文件未上传

时间:2012-07-13 16:46:41

标签: php file-upload

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

上传文件的代码如下所示:

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

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

3 个答案:

答案 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”