SaveFileDialog无法在生产环境中打开

时间:2014-01-16 08:25:13

标签: c# asp.net

我有一个SaveFileDialog来保存数据库中的文件。

直到我在IIS上托管网站,它才能正常工作。然后它开始打开调试器。 显然,对话框被阻止了,但我对可以使用的内容没有进一步的想法。

我的代码是。

SaveFileDialog save = new SaveFileDialog();
save.FileName = tbl.Rows[0][0].ToString();

if (save.ShowDialog() == DialogResult.OK && save.FileName != "")
{
     FileStream FS1 = new FileStream(save.FileName, FileMode.Create);
     byte[] blob = (byte[])tbl.Rows[0][1];
     FS1.Write(blob, 0, blob.Length);
     FS1.Close();

     FS1 = null;
}

任何帮助都将不胜感激。

3 个答案:

答案 0 :(得分:2)

我猜您在ASP.NET网站中使用Windows窗体SaveFileDialog。这是不可能的。也许它适用于您的开发机器,因为Cassini服务作为当前用户运行。

解决方案:

编写适用于ASP.NET的内容

答案 1 :(得分:1)

String FileName = tbl.Rows[0][0].ToString();
String FilePath = "C:/...."; //Replace this

System.Web.HttpResponse response = System.Web.HttpContext.Current.Response;
response.ClearContent();
response.Clear();
response.ContentType = "text/plain";
response.AddHeader("Content-Disposition", "attachment; filename=" + FileName + ";");
byte[] blob = File.ReadAllBytes(FilePath );
response.BinaryWrite(blob );
response.Flush();
response.End();

答案 2 :(得分:0)

HttpContext.Current.Response.WriteHttpContext.Current.Response.BinaryWrite,客户端浏览器应该处理如何保存它

using System;
using System.IO;
using System.Web.UI;

public partial class _Default : Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    // 1.
    // Get path of byte file.
    string path = Server.MapPath("~/Adobe2.png");

    // 2.
    // Get byte array of file.
    byte[] byteArray = File.ReadAllBytes(path);

    // 3A.
    // Write byte array with BinaryWrite.
    Response.BinaryWrite(byteArray);

    // 3B.
    // Write with OutputStream.Write [commented out]
    // Response.OutputStream.Write(byteArray, 0, byteArray.Length);

    // 4.
    // Set content type.
    Response.ContentType = "image/png";
    }
}

来自http://www.dotnetperls.com/response-binarywrite

的示例