這裏就是我希望做的事:獲取大小通過AJAX請求
我想送一個Ajax請求到一個文件中(最好是用jQuery),一旦該文件已加載,確定大小的請求文件。
經過一番Google搜索,很明顯,我甚至都不知道正確的問題要求解決這個問題。任何幫助將不勝感激。
這裏就是我希望做的事:獲取大小通過AJAX請求
我想送一個Ajax請求到一個文件中(最好是用jQuery),一旦該文件已加載,確定大小的請求文件。
經過一番Google搜索,很明顯,我甚至都不知道正確的問題要求解決這個問題。任何幫助將不勝感激。
您可以發出HTTP HEAD請求,並通過讀取Content-Length HTTP標頭獲取文件大小近似值。
這種請求用於獲取有關請求隱含的URL的元信息,而不在響應中傳輸任何內容。
var xhr = $.ajax({
type: "HEAD",
url: "path/to/file.ext",
success: function(msg){
alert(xhr.getResponseHeader('Content-Length') + ' bytes');
}
});
您可以創建一個服務器端命令,它接受文件的路徑和名稱,打開文件以獲取長度,然後將大小發送回客戶端。你怎麼做取決於你使用的服務器端語言。這是你正在尋找的行動的類型?
嗯...所以,我可以使用ajax調用一個php文件,它會加載我真正想要的文件的內容,找出它有多大,然後將文件內容和大小都返回給javascript 。這樣做會讓我可以毫無困難地從另一個域名中調用內容。這聽起來非常出色 - 完全不是我以爲我在尋找的東西,而是一個絕妙的解決方案。 – Peter 2009-09-27 20:02:11
是的,在創建授權的下載控制器時,我已經使用Java完成了這項工作。您可能還想看看CMS的建議 - 我從來沒有想過使用HEAD命令,但如果您只需要文件大小,那可能會更加出色。 – 2009-09-27 20:06:22
這是迄今爲止唯一的答案,它避免了gzip編碼導致內容長度不被髮回。 – user3338098 2015-05-21 16:09:47
var XHRObj = $.ajax({
type:'HEAD',
url:'/',
success:function(data) {
console.log(XHRObj.getResponseHeader('Content-Length'))
}
})
你基本上做一個HEAD HTTP請求和查詢內容長度,它返回X字節。
如果使用gzip編碼,則不會發送內容長度標頭 – user3338098 2015-08-14 14:50:13
+ upvote,這應該是真正的答案:) – 2009-09-27 20:04:23
謝謝@meder! – CMS 2009-09-27 20:05:56
我同意 - 我實際上最終可能會使用其他方法來實現跨域功能,但這實際上是我詢問時所尋找的答案。 – Peter 2009-09-27 20:06:42