-1

こんにちは、ユーザーが大きなサイズのビデオ ファイルをアップロードできないようにする方法を教えてください。特定のタイプのみをアップロードする必要があります。アップロードできるのは 8 MB のファイルのみで、それを超えることはできません。以下は私のコードです。

        <?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 を使用して、Submit で選択したファイルを評価するのが最善の策です。同様に、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 に答える