2012-01-04 87 views
1

在Web應用程序[asp.net]中,我編寫了一個下載代碼,工作正常,但在下載一個窗口顯示「open」/「save」時,我不想問這個消息,當我點擊下載它應該顯示文件。在新窗口或新頁面中。 [下載頁面優秀]。你可以幫我嗎。比你。我的代碼是這樣的:asp.net中的文件下載選項?

string pah = "./Files/" + ds.Tables[0].Rows[0]["targetname"].ToString();      
     // You should put more appropriate MIME type as per your file time - perhaps based on extension 
     Response.ContentType = "application/octate-stream"; 
     //Response.AddHeader("content-disposition", "attachment;filename=[your file name w/o path]"); 
     Response.AddHeader("content-disposition", "attachment;filename="+ds.Tables[0].Rows[0]["targetname"].ToString()); 
     // Start pushing file to user, IIS will do the streaming. 
     Response.TransmitFile(pah); 
     Response.Flush(); 

你能幫助我嗎?謝謝。

回答

1

ASP沒有在客戶端機器上的句柄,所以它不能直接與關聯的應用程序打開文件。出於安全考慮,一個好的瀏覽器總是會提示用戶「你想用這個文件做什麼?開放?保存到磁盤? ?取消」仍然有可能是某些ActiveX方式在微軟IE瀏覽器要做到這一點,像有一個Microsoft Word ActiveX和其他瀏覽器的瀏覽器插件

1

這個線程可以幫助你:

您需要更改「附件;」到「內聯;」在您的響應頭

 Response.AddHeader("content-disposition", "inline;filename="+ds.Tables[0].Rows[0]["targetname"].ToString()); 
     Response.TransmitFile(pah); 
     Response.Flush(); 

如果你仍然有相同的。問題與Response.TransitFile,請使用以下方法。另外,還要確保目標文件名具有XLSX擴展名:

// Open the file. 
iStream = new System.IO.FileStream(filepath, System.IO.FileMode.Open, System.IO.FileAccess.Read,System.IO.FileShare.Read); 

// Total bytes to read: 
dataToRead = iStream.Length; 

Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Disposition", "attachment; filename=" + +ds.Tables[0].Rows[0]["targetname"].ToString()); 

// Read the bytes. 
while (dataToRead > 0) 
{ 
    // Verify that the client is connected. 
    if (Response.IsClientConnected) 
    { 
     // Read the data in buffer. 
     length = iStream.Read(buffer, 0, 10000); 

     // Write the data to the current output stream. 
     Response.OutputStream.Write(buffer, 0, length); 

     // Flush the data to the HTML output. 
     Response.Flush(); 

     buffer= new Byte[10000]; 
     dataToRead = dataToRead - length; 
    } 
    else 
    { 
     //prevent infinite loop if user disconnects 
     dataToRead = -1; 
    } 
} 

但我真的建議使用基於HTML的文件瀏覽器,如:

+0

它顯示保存對話框呢! – 2012-01-04 05:07:01

+0

我更新了上面的答案並添加了TransitFile的替代方法。我希望這有幫助。 – Qorbani 2012-01-04 05:29:07

+0

好的Qorbani,我檢查並通知你,謝謝你的回覆 – 2012-01-04 07:05:31