我有一个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;
}
任何帮助都将不胜感激。
答案 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.Write
和HttpContext.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";
}
}
的示例