0

プロジェクトフォルダにあるPPTをダウンロードフォルダにダウンロードしようとしています。

        System.IO.FileInfo file = new System.IO.FileInfo(HttpContext.Server.MapPath("~/Output/Document.pptx"));
        DownloadPPT("Document.pptx", file);  

これは DownloadPPT 機能です:

    public void DownloadPPT(string fileName, System.IO.FileInfo file)
    {
        if (!file.Exists)
        {

        }
        else
        {
            // clear the current output content from the buffer
            Response.Clear();

            // add the header that specifies the default filename for the 
            // Download/SaveAs dialog 
            Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);

            //// add the header that specifies the file size, so that the browser
            //// can show the download progress
            //Response.AddHeader("Content-Length", file.Length.ToString());

            // specify that the response is a stream that cannot be read by the
            // client and must be downloaded
            Response.ContentType = "application/vnd.ms-powerpoint";
            // send the file stream to the client
            Response.WriteFile(Server.MapPath("~/Output/Document.pptx"));
        }
    }  

エラーはありませんが、ppt はダウンロードされません。
誰かが私のコードで何が間違っているか教えてもらえますか?

4

2 に答える 2

1

このコードを試すことができます:

Response.Clear();
Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName);
Response.ContentType = "application/vnd.ms-powerpoint";
Response.Buffer = true;

using (FileStream fileStream = File.Open(Server.MapPath("~/Output/Document.pptx"), FileMode.Open)
{
    fileStream.CopyTo(Response.OutputStream);
}

Response.End();

あなたのコードの何が問題なのかを正確に伝えることはできませんが、私はこのスニペットを非常によく似たコンテキストで使用しており、常に機能しています。そうでない場合は、あなたの状況の他の条件が原因である可能性がありますか? プロパティにアクセスできるようですResponse。そのため、このスニペットが正しく機能するのを妨げるものは何も考えられません。しかし、これが役に立たない場合は、私よりも経験豊富な人が他にもいるはずです.

于 2013-07-26T07:22:51.067 に答える