3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超5個贊
您可以通過僅請求標(biāo)題來獲取內(nèi)容長度。這是一個基于獲取的方法,在這里這個答案:
const getFileSize = async (url) => {
const response = await fetch(url, {method: 'HEAD'})
const size = response.headers.get('content-length')
return size
}

TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超6個贊
該協(xié)議提供了該方法。根據(jù)維基百科的HTTP文章,它就像方法一樣,只是它只返回HTTP標(biāo)頭而不是數(shù)據(jù)。HTTP
HEAD
GET
這可能正是您所需要的:發(fā)出 AJAX 頭請求而不是 AJAX-GET 請求,并從結(jié)果中解析圖像的預(yù)期大小。
我不知道如何在JS中表述這一點(diǎn),但Linux命令行證明了這個原理是有效的。如果我鍵入:
curl --head https://media.giphy.com/media/yYSSBtDgbbRzq/giphy.gif
我從包含該行的服務(wù)器收到響應(yīng)
content-length: 2156106
這是你想要的信息。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個贊
您可以使用它使用戶能夠上傳下載的文件或復(fù)制/粘貼.gif文件的鏈接。<input type="file" class="js-file-upload" />
之后,從JS端,您將需要檢查該文件的大?。ㄈ绻麄冋迟N直接鏈接,它將自動上傳到用戶PC的臨時(shí)文件中)。
下面是一個簡單的示例
const file = document.querySelector('.js-file-upload').files[0];
const fileSize = (file.size/1024/1024).toFixed(2);
const allowedSize = 5;
if (fileSize > allowedSize) {
//print error
}
添加回答
舉報(bào)