如何在内存中创建文本文件并在其上写入内容并在客户端中打开NotePad并在其中打开该文件?

时间:2010-09-01 19:29:46

标签: c# asp.net memory .net notepad

如何在内存中创建文本文件(Ram - > Save NoWhere)并在其上写点东西并在客户端浏览器上打开NotePad并在其中打开该文本文件并让用户通过他/她保存自? - >在代码背后

感谢未来的进展

最好的问候

1 个答案:

答案 0 :(得分: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>