1


0

メモリにテキストファイルを作成し、その上に何かを書き込み、クライアントでメモ帳を開き、そのファイルを開く方法

メモリにテキストファイルを作成し(Ram→ NoWhereを保存)、その上に何かを書き込み、クライアントブラウザーの上部でメモ帳を開き、そのテキストファイルを開いて、ユーザーが自分で保存できるようにするにはどうすればよいですか? →コードビハインド

今後ともよろしくお願いします

宜しくお願いします

1 Answer


5


それはできません。 +できるのは、ヘッダーに正しいhttp://www.iana.org/assignments/media-types/[MIME]タイプ(たとえば、「text / plain」)を指定してファイルのコンテンツをResponseに書き込むだけで、クライアントブラウザーは指定されたMIMEタイプ用に設定されたビューアでテキストデータを開きます。

<%@ Page language="vb" runat="server" explicit="true" strict="true" %>
2
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

これは、わずかに変更されたc#サンプルコードです。

<%@ Page Title="Home Page" Language="C#" AutoEventWireup="true"%>

    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();

    }