ASP.NET Core WebAPI如何獲得遠程文件返迴文件流給前端?項目採用的是前後端分離的模式,後端使用ASP.NET Core WebAPI方式,將文件流返回給前端。 ...
一、根據網路路徑把文件保存成byte[]返回給前端
項目採用的是前後端分離的模式,後端使用ASP.NET Core WebAPI方式,將文件流返回給前端。
/// <summary> /// 根據網路路徑把文件保存成byte[] /// </summary> /// <param name="filePath"></param> public byte[] UrlToByte(string filePath) { HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(filePath); req.Method = "GET"; using (WebResponse wr = req.GetResponse()) { StreamReader responseStream = new StreamReader(wr.GetResponseStream(), Encoding.UTF8); int length = (int)wr.ContentLength; byte[] bs = new byte[length]; HttpWebResponse response = wr as HttpWebResponse; Stream stream = response.GetResponseStream(); //讀取到記憶體 MemoryStream stmMemory = new MemoryStream(); byte[] buffer1 = new byte[length]; int i; while ((i = stream.Read(buffer1, 0, buffer1.Length)) > 0) { stmMemory.Write(buffer1, 0, i); } byte[] arraryByte = stmMemory.ToArray(); stmMemory.Close(); return arraryByte; } }
二、解決前端無法獲得fileName
前端採用的是Vue技術棧,採用的是axios調用後端介面。前端無法獲得fileName需要修改後端ASP.NET Core WebAPI項目中的【Startup.cs】文件。
修改ConfigureServices方法中的AddCors。
代碼示例:
.WithExposedHeaders("Content-Disposition");//應前端要求暴露Content-Disposition