1
如何在內存中製作文本文件(Ram - >保存NoWhere)並在其上寫上一些內容並在客戶端瀏覽器上打開記事本並打開該文本文件並讓用戶通過他/她自己保存該文件? - >在如何在內存中製作文本文件並在其上寫入內容並在客戶端打開記事本並打開該文件?
感謝在未來提前
問候
如何在內存中製作文本文件(Ram - >保存NoWhere)並在其上寫上一些內容並在客戶端瀏覽器上打開記事本並打開該文本文件並讓用戶通過他/她自己保存該文件? - >在如何在內存中製作文本文件並在其上寫入內容並在客戶端打開記事本並打開該文件?
感謝在未來提前
問候
你不能這樣做,後面的代碼。
您只需將文件內容寫入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>
我發現下面的代碼: 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
如何在評論中添加新行? – LostLord 2010-09-01 19:40:49
@LostLord你的代碼將在服務器上運行nodepad,而不是客戶:) – 2010-09-01 19:42:09