0

csv ファイルは既に /Exports/test.csv として保存しています。ユーザーがボタンクリックでファイルをダウンロードできるようにしたい。そのコードのハンドラーを作成しました:

<%@ WebHandler Language="C#" Class="Downloadfile" %>

using System;
using System.Web;
using System.Net;

public class Downloadfile : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        HttpContext.Current.Response.ClearHeaders();
        HttpContext.Current.Response.Clear();

        context.Response.ContentType = "text/csv";
        context.Response.AddHeader("Content-Disposition", 
            "attachment; filename=" + context.Request.QueryString["file"]);

        context.Response.End();
    }

    public bool IsReusable
    {
        get
        {
            return true;
        }
    }
}

上記のコードはファイルをダウンロードしますが、空です。そのコンテンツを含むcsvファイルをダウンロードしたいだけです。

4

2 に答える 2

3

ユーザーが "Accepts" ヘッダーに何を渡すかによって、先日も同じことをしなければなりませんでした。Media Formatters に関する MSDN の記事の例を使用しましたが、完全に機能しました。

私は MVC の WebApi を使用しているため、あなたのものとは少し異なりましたが、基本的な概念は同じです。

于 2013-03-11T17:44:07.223 に答える
3

ファイルを送信する必要があります。TransmitFileメソッドを使用するか、ディスクに書き込む代わりに直接書き込むことができますcontext.Response.OutputStream

public void ProcessRequest(HttpContext context)
{
    context.Response.ClearHeaders();
    context.Response.Clear();
    context.Response.ContentType = "text/csv";
    context.Response.AddHeader("Content-Disposition", "attachment; filename=" +  context.Request.QueryString["file"]);
    context.Response.TransmitFile("/Exports/test.csv");
    context.Response.End();
}
于 2013-03-11T17:41:57.683 に答える