2010-09-01 67 views

回答

5

你不能這樣做,後面的代碼。
您只需將文件內容寫入Response,並在頭中輸入正確的MIME類型(例如「text/plain」),客戶端瀏覽器將使用配置的查看器爲提供的MIME類型打開文本數據。

<%@ Page language="vb" runat="server" explicit="true" strict="true" %> 
2 <script language="vb" runat="server"> 
3 Sub Page_Load(Sender As Object, E As EventArgs) 
4  Dim strRequest As String = Request.QueryString("file") '-- if something was passed to the file querystring 
5  If strRequest <> "" Then 'get absolute path of the file 
6   Dim path As String = Server.MapPath(strRequest) 'get file object as FileInfo 
7   Dim file As System.IO.FileInfo = New System.IO.FileInfo(path) '-- if the file exists on the server 
8   If file.Exists Then 'set appropriate headers 
9    Response.Clear() 
10    Response.AddHeader("Content-Disposition", "attachment; filename=" & file.Name) ' comment this line if needed 
11    Response.AddHeader("Content-Length", file.Length.ToString()) 
12    Response.ContentType = "application/octet-stream" 'this is MIME type 
13    Response.WriteFile(file.FullName) 
14    Response.End 'if file does not exist 
15   Else 
16    Response.Write("This file does not exist.") 
17   End If 'nothing in the URL as HTTP GET 
18  Else 
19   Response.Write("Please provide a file to download.") 
20  End If 
21 End Sub 
22 </script> 

http://www.xefteri.com/articles/show.cfm?id=8

在這裏被稍微修改C#示例代碼

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"%> 
<script language="cs" runat="server"> 
    public void Page_Load(object sender, EventArgs e) 
    { 

     byte[] buffer; 
     using (var memoryStream = new System.IO.MemoryStream()) 
     { 
      buffer = Encoding.Default.GetBytes("Hello StackOverflow"); //Dummy data 
      memoryStream.Write(buffer, 0, buffer.Length); 
      Response.Clear(); 
      Response.AddHeader("Content-Disposition", "attachment; filename=hello.txt"); //This wil force browser to silently download file. you can comment this line to see difference 
      Response.AddHeader("Content-Length", memoryStream.Length.ToString()); 
      Response.ContentType = "text/plain"; //This is MIME type 
      memoryStream.WriteTo(Response.OutputStream); 
     } 
     Response.End(); 

    } 
</script> 
+0

我發現下面的代碼: MemoryStream的MS =新的MemoryStream(); StreamWriter sw = new StreamWriter(ms); sw.WriteLine(「This Is A Test Text」); System.Diagnostics.Process.Start(「notepad.exe」,「FileNmae」); 但System.Diagnostics.Process.Start需要一個文件名... 我該怎麼做這項工作? thnaks – LostLord 2010-09-01 19:39:55

+0

如何在評論中添加新行? – LostLord 2010-09-01 19:40:49

+0

@LostLord你的代碼將在服務器上運行nodepad,而不是客戶:) – 2010-09-01 19:42:09

相關問題