0
如何將在服務器內存中創建的文件下載到客戶端而不保存它(ASP.NET)?如何將在服務器內存中創建的文件下載到客戶端而不保存它?
我使用NetOffice在服務器上生成了Excel文件。但現在,我無法將其下載到客戶端。我不想在服務器上保存此文件的副本。
我們可以使用Streams發送在內存中創建的文件對象嗎?
如何將在服務器內存中創建的文件下載到客戶端而不保存它(ASP.NET)?如何將在服務器內存中創建的文件下載到客戶端而不保存它?
我使用NetOffice在服務器上生成了Excel文件。但現在,我無法將其下載到客戶端。我不想在服務器上保存此文件的副本。
我們可以使用Streams發送在內存中創建的文件對象嗎?
確實可以。只需傳遞給您的HTTP請求的Response.OutputStream即可。這樣的東西應該工作(其中yourStream是從你的內存excel文檔流):
Response.Clear();
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AddHeader("Content-Disposition", "attachment; filename=myfile.xlsx");
yourStream.WriteTo(Response.OutputStream);
Response.Flush();
謝謝@geedubb,似乎是我的問題的解決方案。 :) 但我對「yourStream」對象有一個疑問。它是MemoryStream類的一個對象嗎? –
我們可以如下使用這個對象: MemoryStream m = new MemoryStream(); m.WriteTo(Response.OutputStream); 我可能在這裏錯了,因爲我們可能必須傳遞文件的字節來初始化MemoryStream對象。 這是因爲使用NetOffice創建Excel文件,我只獲取ExcelApplication,WorkBook和WorkSheet類的對象。只是爲了您的信息,當我做WorkBookObject.Visible = true; excel文件在服務器上可見。但我沒有找到一種方法來獲取工作簿對象的字節,以便我可以將它傳遞給MemoryStream並初始化它。 –
是的,你建議使用memoryStream應該工作,但我不熟悉NetOffice。你可以更新你的問題,並分享創建你的Excel文件的代碼樣本,我會嘗試進一步幫助嗎? – geedubb