下載PDF檔無法開�� |
尚未結案
|
nancy
一般會員 發表:8 回覆:19 積分:10 註冊:2002-07-11 發送簡訊給我 |
我寫了一個網路硬碟的程式,可以上傳下載檔案,很奇怪的是下載PDF檔到自己的硬碟上後開?會顯示檔案已毀損,但其他檔案都沒有問題,實在不知道該怎麼辦,請各位前輩幫幫忙,程式碼如下:
private void DownloadFile() { byte[] buf; try { ReadFile(out buf, Request["filename"]); Response.ClearHeaders(); Response.Clear(); Response.Expires = 0; Response.Buffer = true; string filename = HttpUtility.UrlEncode(Path.GetFileName(Request["filename"]),Encoding.UTF8); Response.AddHeader("content-disposition","attachment;FileName=" filename); Response.ContentType = "Application/octet-stream"; Response.BinaryWrite(buf); } catch(Exception e) { ltScript.Text = "alert(\"" e.Message.Replace("\\n","\n") "\");"; } } private void ReadFile(out byte[] buf, string filename) { if (!File.Exists(filename)) throw new Exception("錯誤: 檔案不存在!"); else { Stream s = File.OpenRead(filename); buf = new byte[s.Length]; s.Read(buf,0,buf.Length); s.Close(); } } |
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
您的寫法是以前用Asp的寫法,Asp.net有另外的寫法...
如果要依您的寫法,建議修改如下:
引言: 我寫了一個網路硬碟的程式,可以上傳下載檔案,很奇怪的是下載PDF檔到自己的硬碟上後開?會顯示檔案已毀損,但其他檔案都沒有問題,實在不知道該怎麼辦,請各位前輩幫幫忙,程式碼如下:wodahs ====================================================================== 我是非出身科班的菜鳥,瞎子摸象,寫錯的地方,請大家包涵包涵,不要太認真 ^^ 歡迎大家批評指教,適時糾正我錯誤觀念,這樣我才會進步並學到正確的知識 ^^ ======================================================================private void DownloadFile() { //byte[] buf; //Remark try { // ReadFile(out buf, Request["filename"]); //Remark string rf = Request["filename"]; //新增,視需要使用Server.MapPath //在這邊加上檢查檔案是否存在 Response.ClearHeaders(); Response.Clear(); Response.Expires = 0; Response.Buffer = true; string filename = HttpUtility.UrlEncode(Path.GetFileName(rf),Encoding.UTF8);//修改 Response.AddHeader("content-disposition","attachment;FileName=" filename); Response.ContentType = "Application/octet-stream"; // Response.BinaryWrite(buf); //Remark Response.WriteFile(rf); } catch(Exception e) { ltScript.Text = "alert(\"" e.Message.Replace("\\n","\n") "\");"; } } private void ReadFile(out byte[] buf, string filename) { if (!File.Exists(filename)) throw new Exception("錯誤: 檔案不存在!"); else { Stream s = File.OpenRead(filename); buf = new byte[s.Length]; s.Read(buf,0,buf.Length); s.Close(); } } |
nancy
一般會員 發表:8 回覆:19 積分:10 註冊:2002-07-11 發送簡訊給我 |
|
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
程式碼我這邊是有先跑過可以執行.可能麻煩您再確認一下下面幾點: 1.原來的ReadFile在我修改的已經沒有使用.
2.檢查PDF檔案是否存在,路徑是否正確(我上面事先預設放在同個目錄,所以省去檢查)
3.寫出時是使用Response.WriteFile,而不是Response.BinaryWrite. 上面答案應該都是"Yes"才對. wodahs
======================================================================
我是非出身科班的菜鳥,瞎子摸象,寫錯的地方,請大家包涵包涵,不要太認真 ^^
歡迎大家批評指教,適時糾正我錯誤觀念,這樣我才會進步並學到正確的知識 ^^
======================================================================
|
nancy
一般會員 發表:8 回覆:19 積分:10 註冊:2002-07-11 發送簡訊給我 |
|
wodahs
初階會員 發表:0 回覆:33 積分:26 註冊:2004-02-26 發送簡訊給我 |
引言: 您好!關於您的問題我已詳細檢查過,程式沒錯,路徑沒錯,PDF檔也ok,但是問題仍在...我想問題原因應該不是在於程式邏輯,也不是路徑,因為其他檔案下載後開?都是沒問題的,唯獨>>< face="Verdana, Arial, Helvetica"> 您有用過UltraEdit 或其他二進位編輯軟體開啟你下載的檔案? 如果有問題開啟後的檔案內容比較常見是下面兩種. 1.裏面是類似Html的指令 2.是Unicode (但開頭得像%PDF-x.x%) 如果不會看(或都不是),寄您的檔案給我,我幫您看. wodahs ====================================================================== 我是非出身科班的菜鳥,瞎子摸象,寫錯的地方,請大家包涵包涵,不要太認真 ^^ 歡迎大家批評指教,適時糾正我錯誤觀念,這樣我才會進步並學到正確的知識 ^^ ====================================================================== |
code6421
版主 發表:43 回覆:223 積分:208 註冊:2002-08-16 發送簡訊給我 |
try this. [code]
Response.AddHeader("content-disposition","attachment;FileName="+ filename);
Response.ContentType = "Application/octet-stream";
Response.BinaryWrite(buf);
Response.Flush();
Response.Close();
[/code Just coding...
Taiwan:http://code6421.ktop.com.tw
China:http://home.hoolee.com/~code6421
------
Just codeing... |
nancy
一般會員 發表:8 回覆:19 積分:10 註冊:2002-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |