2012-03-21 188 views
21

數(HTML文件輸入),我有一個基本的,衆所周知的多文件上傳表單。類似的東西...計數,限制上傳文件的

<input type="file" multiple="multiple" name="something[]" /> 

有沒有一種方法(最好是硬編碼選項)來限制用戶可以選擇的文件數量?通過限制我的意思是嚴格屏蔽,如果超過號碼不只是一個警告。

在此先感謝。 :)

+0

你總是可以阻止它在PHP代碼,但這裏有沒有足夠的信息來知道你的接口行爲。 – Scuzzy 2012-03-21 22:06:00

回答

7

您可以實現一個JavaScript的解決方案,以檢查已選定的文件,然後你就可以用它來禁止上傳到服務器的數量。其實只有將是客戶端的解決方案,這個問題雖然,因爲實在沒有什麼反正從這些文件發佈到你的PHP腳本停止用戶。您可以指定最大上傳大小限制,但不限於正在上傳的文件數量。

最好的辦法是實行一些JavaScript檢查,確定一個合理的最大上傳大小爲HTTP服務器(或PHP),然後無視如果超過你的最大計數上傳過任何文件。

閱讀關於HTML5文件API這裏來限制所選文件的數量:http://dev.w3.org/2006/webapi/FileAPI/

這裏是在php.ini文件解釋如何作出上傳大小限制:http://php.net/manual/en/ini.core.php

至於建議在評論,退房:http://php.net/manual/en/ini.core.php#ini.max-file-uploads

+8

'因爲確實沒有什麼能夠阻止用戶將這些文件發佈到你的php腳本中:實際上,有。在'php.ini'中,你可以用'max_file_uploads'選項限制這個數字(http://www.php.net/manual/en/ini.core.php#ini.max-file-uploads) – marvin 2012-03-21 22:13:57

+2

@marvin:請將其添加爲答案 – zerkms 2012-03-21 22:14:38

+1

@marvin我曾假設「允許上傳的文件的最大數量_simultaneously_」意味着阻止同時HTTP連接上傳不同文件的方法。情況並非如此嗎? – GoldenNewby 2012-03-21 22:19:21

7

我們都知道,在一個陣列first element is stored in 0 th index, 2nd in 1st index......nth in (n-1)th index

現在你不能把count($_FILES['something'])它總是會返回5,因爲有數組

在5個鍵現在的問題是什麼$_FILES['something']['name'][0]包含?第一個文件的=>名上傳

所以請喜歡

if(empty($_FILES['something']['name'][0])) 
{ 
    //checking whether a single file uploaded or not 
    //if enters here means no file uploaded 
    //so if you want you may put a check/validation here to make file 
    //upload a must in your website 
} 
if(isset($_FILES['something']['name'][5])) 
{ 
    //checking whether 6 files uploaded or not 
    //so here you can put a check/validation to restrict user from 
    //uploading more than 5 files 
}