調用接口直接下載文件


我想使用webservice從一個網站將文件推送到瀏覽器.我正在將文件讀入base64字節數組,並從webservice返回.這個webservice是從一個網站調用的,我堅持把這個原始文件推送到瀏覽器.理想情況下,我想將字節數組讀入內存流,然后只要將其寫入響應流即可,最終用戶只需下載文件即可.

解決方法

首先,而不是發送一個base64字節的數組,讓您的Web服務只返回一個字節數組為您的文件. Response.OutputStream.Write()將自動對您的字節進行base64編碼,因此您也可以將它們在內存流中進行編碼.

其次,您不僅需要字節數.您將需要與文件關聯的元數據.對於下面的代碼片段,我將所有的元數據放在一個單獨的類(本地實例名為“file”)中.然后,只要使用此代碼段,一旦您擁有所需的數據:

    

var stream = fhelp.DownloadFile(fileId);
var ms = new MemoryStream();
stream.CopyTo(ms);
ServiceLog.Info(string.Format("調用【下載文件】方法,處理結果:{0}", Convert.ToBase64String(ms.GetBuffer())));
var file = ms.GetBuffer();
Context.Response.Clear();
Context.Response.ClearHeaders();
Context.Response.ContentType = "application/octet-stream";
Context.Response.AddHeader("Content-Disposition", "attachment; filename=\"" + "uuuuu" + "\"");
Context.Response.AddHeader("Content-Length", file.Length.ToString());
Context.Response.OutputStream.Write(file,0,file.Length);//(file.Bytes, file.Bytes.Length)
Context.Response.Flush();
Context.Response.End();

 原文網址:https://www.jb51.cc/csharp/91742.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM