上傳檔案後端處理方法二(C#)

  • 839
  • 0
  • C#
  • 2021-01-07

這一篇是接續[上傳檔案(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);  //將暫存陣列的資料寫入至指定位置

}

這樣就不需要使用到路徑了