ASP.NET下载的文件已损坏
我编写了以下代码从sharepoint下载文件。只有在某些机器上,向下倾斜的文件才能正常工作。对于其他人,它表示文件已损坏。问题是针对MS Office和图像文件,但是PDF没有任何问题。我们已经确定了由于在文件内容的顶部添加了十六进制数字而导致的损坏问题。删除该文件后,将正确打开该文件。十六进制字符表示文件大小(字节)。为什么这只发生在一些机器上,我们如何修复它ASP.NET下载的文件已损坏,asp.net,sharepoint,download,corrupt,Asp.net,Sharepoint,Download,Corrupt,我编写了以下代码从sharepoint下载文件。只有在某些机器上,向下倾斜的文件才能正常工作。对于其他人,它表示文件已损坏。问题是针对MS Office和图像文件,但是PDF没有任何问题。我们已经确定了由于在文件内容的顶部添加了十六进制数字而导致的损坏问题。删除该文件后,将正确打开该文件。十六进制字符表示文件大小(字节)。为什么这只发生在一些机器上,我们如何修复它 private void DownloadFile() { SPListItem item = GetFileFrom
private void DownloadFile()
{
SPListItem item = GetFileFromSharepoint();
if (item != null)
{
byte[] bytes = item.File.OpenBinary();
Response.ClearContent();
Response.ClearHeaders();
string fileType = string.Empty;
fileType = item["FileFormat"].ToString();
Response.AppendHeader("Content-Disposition",
string.Format("attachment; filename= {0}", item["Filename"].ToString().Replace(" ", "")));
Response.ContentType = GetContentType(fileType);
//Check that the client is connected and has not closed the connection after the request
if (Response.IsClientConnected)
{
Response.BinaryWrite(bytes);
}
}
Response.Flush();
Response.Close();
}
从中可以看出:
如果
文件大小为0(零)字节
您确定此函数的返回值正确吗?您没有检查字节
数组的长度
更新:
可能将SPOpenBinaryOptions.Unprotected
传递给
OpenBinary
是否可行