這一篇是接續[上傳檔案(Javascript)]這一篇文章
這種方法雖然在本機可行
但掛到伺服器上就會出現問題了
首先是 SaveAs方法會將該檔案儲存到指定位置
但是是從電腦上的路徑位置去找原檔案
而不是將傳進來的檔案流存到指定位置
所以會因為路徑不同而報錯
舉例來說,我想要上傳的檔案其路徑為
C:/Users/leon/Desktop/text.doc
如果使用SaveAs就會依照這個路徑去找原始檔案
可是你的電腦有這個路徑嗎?
同理對伺服器來說它也沒有這個路徑
因此就會出現IOException
所以這個方法只適用在本機上
而無法應用在網頁程式上
不過解決方法也很簡單
因為檔案已經跟著request傳送到後端了
所以就從裡面找出檔案的資料流即可
public void UploadFile(HttpPostedFileBase file){
Stream fs = file.InputStream; //讀取該檔案的資料流
var buffer = new byte[fs.Length]; //建立暫存陣列
fs.Read(buffer, 0, buffer.Length); //將資料讀進暫存陣列
File.WriteAllBytes(fileRoute, buffer); //將暫存陣列的資料寫入至指定位置
}
這樣就不需要使用到路徑了