2013-03-29 88 views
4

我使用此代碼導出/打開文件(pdf/xls/doc)。C#文件導出問題

Response.Clear(); 
Response.Buffer = true; 

Response.ContentEncoding = System.Text.Encoding.UTF8; 
Response.Charset = "UTF-8"; 
Response.ContentType = mimeType; 

Response.AppendHeader("content-disposition", "inline; filename=" + fileName + "." + extension); 

Response.BinaryWrite(bytes); 
Response.End(); 

當我用Word打開一個doc文件並單擊導出爲xls或pdf時,直到我關閉Word時纔會發生任何事情。 關閉Word後,我已經可以打開xls和pdf了。

當我用Excel打開xls時存在此問題。

是什麼原因?

+2

你不能在流上設置'FileOpen'模式..你能顯示你是如何聲明流..?也看看這個帖子的例子,並嘗試使用這樣的'FileAccess.ReadWrite,FileShare.None' http://stackoverflow.com/questions/3889521/response-addheadercontent-disposition-not-opening-file-in- ie6 – MethodMan

回答

1

根據您使用這個詞版本,我要說的是,問題來自於inlinecontent-disposition

在最近版本的Word(在Word 2010中看到的),它試圖在WEBDAV模式下打開文檔時inline ,這可能會導致問題(鎖,嘗試導出時丟失cookie或證書/打印文檔)

你可以看看你的網絡流量,看看這WEBDAV行爲參與,並查看是否content-dispositionattachment解決了這個問題。

希望這會有幫助

2

原因是因爲Word和其他類似Word的程序會鎖定打開的文件以避免再次打開文件。所以鎖定的文件無法再從應用程序中打開。

+7

在所有應有的尊重,我認爲這個問題屬於SO。 –

+3

關於這是否是編程問題的問題已經出現在[meta](http://meta.stackexchange.com/q/174144/158605) – Rachel

+0

@Rachel好了,知道了meta,我刪除了評論,並且所有的行都已經被Ben刪除了(只是投票結束或者任何事情)。 – Aristos