[英]Determine the size of a file upload before reading it all in in the Apache FileUpload Streaming API
有兩種方法可以使用Apache FileUpload Library。
上傳文件
http://commons.apache.org/fileupload/using.html
和Streaming FileUpload API
http://commons.apache.org/fileupload/streaming.html
它們都很好用,除了流API在處理流之前似乎沒有辦法檢查fileSize。
這是因為Streaming API從根本上不知道文件大小,還是因為我需要手動讀取一些標題或其他內容來獲取Multipart上傳大小?
在不占用整個HTTP請求主體的情況下,無法知道多部分請求的一部分的大小。 一旦消耗了HTTP請求主體,就不能停止中途使用它了。 它必須被消耗,直到可以返回響應之前的最后一個字節。 這只是HTTP和TCP / IP的本質。 為了保持較低的服務器內存使用率,您可以在超過大小時丟棄讀取的字節(即在讀取循環內檢查它並且不將它們分配給任何變量)。
最好的辦法是在上傳之前用JavaScript驗證文件長度。 支持 HTML5 File
API的瀏覽器支持此功能。 當前版本的Firefox,Chrome,Safari,Opera和Android都支持它。 IE9還不支持它,它將在未來的IE10中使用。
<input type="file" ... onchange="checkFileSize(this)" />
checkFileSize()
看起來像這樣
function checkFileSize(inputFile) {
var max = 10 * 1024 * 1024; // 10MB
if (inputFile.files && inputFile.files[0].size > max) {
alert("File too large."); // Do your thing to handle the error.
inputFile.value = null; // Clear the field.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.