-1

嗨,谁能告诉我如何限制用户上传大尺寸的视频文件,他们应该只上传特定类型的视频文件。他们应该只能上传 8mb 的文件,不能超过这个。下面是我的代码。

        <?php
    if(isset($_POST['submit']))
    {

        $filename=$_FILES['file']['name'];
        $filesize=$_FILES['file']['size'];
        $filetype=$_FILES['file']['type'];
        $tmpfile=$_FILES['file']['tmp_name'];
        $unique=str_shuffle("abcde").$filename;

        if ((($filetype == "video/avi")
    || ($filetype == "video/mpeg")
    || ($filetype == "video/mpg")
    || ($filetype == "video/mov")|| ($filetype == "video/wmv") || ($filetype == "video/rm") || ($filetype == "image/mp4"))
    && ($filesize < 8388608 and $filesize > 20))

{

    move_uploaded_file($tmpfile,"uploads/$unique");

        echo'file is uploaded';
}
        else
    {
        echo'failure in uploading';
    }





}


?>

4

1 回答 1

0

您还可以限制 HTML 表单中的文件大小:<input type="hidden" name="MAX_FILE_SIZE" value="8388608" />尽管它会处理整个上传,然后导致失败。

最好的办法是使用 jQuery 来评估提交时选择的文件,并像你一样使用 PHP 服务器端验证。

EDIT1a:jQuery示例:使用 jQuery,在上传之前限制文件大小

EDIT1b:来自工作站点的示例 PHP 上传代码:

protected function handle_image_upload($frmFilesID = false, $thisFile = false) {

$fileName = $_FILES["$frmFilesID"]['name'][$thisFile];
$tmpName = $_FILES["$frmFilesID"]['tmp_name'][$thisFile];
if (!is_uploaded_file($tmpName)) { trigger_error("Security block.", E_USER_ERROR); return false; }
$fileSize = $_FILES["$frmFilesID"]['size'][$thisFile];
$fileType = $_FILES["$frmFilesID"]['type'][$thisFile];

// Evaluate File Size
if ($fileSize > '8388608') { trigger_error('File exceeds maximum size.', E_USER_ERROR); return false; }

// Make folder path if needed
$destPath = 'imgdir';
if (!is_dir($destPath) && !@mkdir($destPath, 0777, true)) { trigger_error("Could not create folder.", E_USER_ERROR); return false; }

// Test if file already exists (auto-rename?)
if (file_exists($destPath . '/' . $fileName)) {
    trigger_error("File already exists, rename the file and try again.", E_USER_ERROR);
    return false;
}

// Move uploaded file from tmp
if (move_uploaded_file($tmpName, $destPath . '/' . $fileName)) {
    return true;
} else {
    trigger_error("Invalid results.", E_USER_NOTICE);
    return false;
}

}

为正在上传的每个文件调用该函数:

for ($i=0; $i<$count; $i++) {
    $frmFilesID = "ImagesFormIdGoesHere";
    if (!handle_image_upload($frmFilesID, $i)) { echo "<br /><strong>NOTE:</strong> Failed to upload file $i..."; }
}
于 2013-03-11T15:05:36.207 回答