我已编写以下代码从sharepoint下载文件。下载的文件只在某些机器上正常工作。对于其他人,它说该文件已损坏。问题出在MS Office和图像文件上,但PDF没有任何问题。我们已经确定了腐败问题,因为在文件内容的顶部添加了十六进制数字。删除后,文件将正确打开。已跟踪十六进制字符以表示文件大小(以字节为单位)。为什么只在某些机器上发生这种情况,我们如何解决?
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 :(得分:0)
来自the documentation,似乎暗示:
OpenBinary方法如果失败则失败 文件大小为0(零)字节。
您确定此功能的返回值是否正确?您没有检查bytes
数组的长度。
<强>更新强>
也许将SPOpenBinaryOptions.Unprotected
传递给
OpenBinary
可能有用吗?