台灣最大程式設計社群網站
線上人數
2371
 
會員總數:243671
討論主題:188259
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 為何下載的ods檔會出現
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
為何下載的ods檔會出現
價值 : 20 QP  點閱數:171 回應數:2

樓主

Robert
初學者
4 219
1386 94
發送站內信

大家好
我在測試產生的ods檔案可直接下載,不存暫存檔在Server上。程式碼如下:

String TargetDirectory = "D:\\test2\\107系統維修紀錄總表.ods";
MemoryStream stream = new MemoryStream();
stream.Seek(0, SeekOrigin.Begin);

Ionic.Zip.ZipFile zip1 = Ionic.Zip.ZipFile.Read(TargetDirectory);
Response.ClearContent();
Response.ClearHeaders();
Response.AppendHeader("content-disposition", "attachment; filename=Report.ods");

zip1.Save(Response.OutputStream);
zip1.Dispose();

檔案下載後,雖然可以打開,但卻會出現如下訊息,該如何解決?


檔案「Report.ods」已毀壞,因此無法開啟。OpenOffice可嘗試修復該檔案。

毀壞可能是文件處理結果,或由於資料傳輸導致文件結構毀壞的結果。



搜尋相關Tags的文章: [ 檔案下載 ] ,
本篇文章發表於2018-10-08 17:47
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
Response.AppendHeader("content-disposition", "attachment; filename=Report.ods");

改成
Response.AppendHeader("content-disposition", "attachment; filename=Report.zip");

試試看
本篇文章回覆於2018-10-08 17:51
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
最有價值解答

topcat
捐贈 VP 給 topcat 檢舉此回應
您是要透過Stream讀檔案到記憶體,然後再輸出檔案,變成下載

好奇,為何要用Seek?

參考一下別人怎麼寫,建議您
1.試著看懂
2.修改成您要的

https://dotblogs.com.tw/puma/2008/05/06/3807

^_^
本篇文章回覆於2018-10-08 18:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.