
114
|
第七章
可以設定自訂表頭(像是
X-File-Name
)。好讓伺服器端能從表頭中取得這些資訊,並依
據這些資訊為檔案做些處理:
$.ajax({
url: "http://example.com",
type: "POST",
success: function(){ /* ... */ },
processData: false,
contentType: "multipart/form-data",
beforeSend: function(xhr, settings){
xhr.setRequestHeader("Cache-Control", "no-cache");
xhr.setRequestHeader("X-File-Name", file.fileName);
xhr.setRequestHeader("X-File-Size", file.fileSize);
},
data: file
});
但很不幸的,許多伺服器無法正確的處理這種上傳檔案的請求,因為相較於 multipart 或
URL 編碼過的表單參數,這種資料格式對伺服器來說比較陌生。如果一定要採用這種做
法,就得自行額外撰寫程式,解譯上傳檔案的請求。因此,我會比較建議使用
FormData
物件來發送
multipart/form-data
格式的上傳請求。本書的範例程式檔
assets/ch07/
jquery.upload.js
,是一套 jQuery 的外掛模組,它會幫你把上傳檔案的功能,抽象化成一