天天看點

亂想(四)

以前在C#中使用WebClient這個玩意下載下傳過檔案和上傳過檔案,于是想如何在javascript中完成相通的操作?

要上傳一個檔案到伺服器上,我們的思路應該是将檔案序列化或者轉成位元組流傳到伺服器上,然後在背景服務中進行解析,我相信背景服務對大家來說都不是問題,如下:

 但是前台的資料如何上去呢?要回答這個問題,就要解決檔案怎麼才能被序列化?

在送出資料的時候,沒太關注過多的細節,因為我喜歡自己去構造這個URL,是以忽略了form,通常我們送出(使用submit button)時,會把form中的所有表格元素的name與value組成一個queryString,送出到背景,這也就是說form是自動幫我們構造了這個請求的URL,它将Key=value自動添加到我們制定的URL之後。

在form中添加 enctype="multipart/form-data"就可以解決我所提到的“序列化問題”,當然這肯定比我說複雜,這個也應該有自己的規範,這個東西就是一個編碼規範,說明了上傳的資料用什麼編碼,如果想深入這個規範,可以Google或者Baidu。

在上傳檔案的時候,可能會遇到資料過大而報錯,這是因為ASP.NET允許上傳的檔案預設是4MB,可以修改web.config檔案修改這個的大小,也許你不想這麼做,但是也有别的辦法。

繼續閱讀