我们将文件作为BLOB存储在mysql中,文件名也是。而且 上传其工作罚款。现在我们想从gridview下载它 这也很完美。但问题是下载后 我们试图打开它时很好,它显示文件格式错误。我们只是 仅处理办公室文件和pdf。
try
{
int did = Convert.ToInt32(e.CommandArgument);
DataSet path = download.GetresourcePath(did);
byte[] fileFromDatabase = null;
DataRow row = path.Tables[0].Rows[0];
fileFromDatabase = (byte[])row["UPLFILE"];
string filename = (string)row["FILENAME"];
if (fileFromDatabase.Length > 0)
{
Response.Clear();
Response.Buffer = true;
Response.ContentType = string.Format("application/{0}",
Path.GetExtension(filename).Substring(1));
Response.AddHeader("content-disposition",
string.Format("attachment;filename={0}", filename));
Response.BinaryWrite(fileFromDatabase);
Response.Flush();
Response.End();
}
}
catch (Exception)
{
return;
}
那么任何人都可以建议我做错了吗?
答案 0 :(得分:1)
尝试删除标题条目并手动添加。
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Type", "application/octet-stream");
Response.AddHeader("Content-Length", fileFromDatabase.Length.ToString());
Response.AddHeader("Content-Disposition",string.Format("attachment;filename={0}", filename));
Response.BinaryWrite(fileFromDatabase);
Response.Flush();
Response.End();
答案 1 :(得分:0)
我建议您不要将文件存储为BLOB。如果没有别的话,这对表现来说非常糟糕。
您应该将文件存储在服务器的文件系统中,并在数据库中存储文件的路径。