簡體   English   中英

嘗試通過PHP解析SDK上傳文件時,如何限制文件大小?

[英]How can I limit the file size when I try to upload files via PHP parse SDK?

我正在嘗試將文件上傳到解析SDK雲,從技術上講,它可以正常工作,但是現在我想限制用戶可以上傳的最大文件大小。 這是代碼:

if ( isset( $_FILES['image'] ) ) {

    // save file to Parse
    $file = ParseFile::createFromData( file_get_contents( $_FILES['image']['tmp_name'] ), $_FILES['image']['name']  );
    $file->save();
}

只需使用if語句並獲取文件的大小

$_FILES['image']['size']
//The size, in bytes, of the uploaded file.

就像是

if($_FILES['image']['size'] < 10000000)
{
    // save file to Parse
    $file = ParseFile::createFromData( file_get_contents( $_FILES['image' ['tmp_name'] ), $_FILES['image']['name']  );
    $file->save();
}
else
{
    //Tell user that the file is too big, however you prefer
}

客戶端內容:直接來自PHP文檔:

<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="__URL__" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="userfile" type="file" />
    <input type="submit" value="Send File" />
</form>

上面示例中的URL應該被替換,並指向一個PHP文件。

MAX_FILE_SIZE隱藏字段(以字節為單位)必須在文件輸入字段之前,其值是PHP接受的最大文件大小。 應該始終使用此表單元素,因為它為用戶省去了等待傳輸大文件而又發現它太大而傳輸失敗的麻煩。 請記住:在瀏覽器端愚弄該設置非常容易,因此切勿依賴此功能阻止更大文件的訪問。 對於在應用程序客戶端的用戶來說,它只是一個便利功能。 但是,不能欺騙最大大小的PHP設置(在服務器端)。

如果查看$_FILES數組,您會發現每個$_FILES['image']['size']傳遞了一條數據。

如果要在PHP端限制大小,則只需測試該字段

if ( isset( $_FILES['image'] ) ) {
    if ( $_FILES['image']['size'] < 10000 ) {
        // save file to Parse
        $file = ParseFile::createFromData( 
                   file_get_contents( $_FILES['image']['tmp_name'] ), 
                   $_FILES['image']['name']  );
        $file->save();
     } else {
         // return some sort of error
     }
}

只需記住$_FILES['image']['size']記錄在BYTES中。

嘗試這種方式

if(isset($_FILES['image']) {
if($_FILES['image']['size'] > 10485760) { //10 MB (size is also in bytes)
    // File too big
} else {
     $file = ParseFile::createFromData( 
               file_get_contents( $_FILES['image']['tmp_name'] ), 
               $_FILES['image']['name']  );
     $file->save();
}
}

您可以在解析文件之前限制文件大小。 見下文:

    if ( isset( $_FILES['image'] ) ) {
        $maxsize    = 2097152; // 2MB 

        if(($_FILES['image']['size'] >= $maxsize) || ($_FILES["image"]["size"] == 0)) {
            $message = 'File too large. File must be less than 2 megabytes.'; 
            echo '<script type="text/javascript">alert("'.$message.'");</script>'; 
        }

        // save file to Parse
        $file = ParseFile::createFromData( file_get_contents( $_FILES['image']['tmp_name'] ), $_FILES['image']['name']  );
        $file->save();
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM