当我下载任何文件时,在下载文件上打开文件已损坏,想要修复时显示错误,但是下载pdf时不会出现此问题。
我检查了服务器并正确存储了文件,我尝试使用复制/粘贴将其从服务器直接复制到我的机器,并且文件以这种方式工作,但是当我下载它(除PDF文件之外)时,该文件不起作用。
<asp:FileUpload ID="fileUpload" runat="server" CssClass="btn btn-success" />
<asp:RegularExpressionValidator ID="revFileUpload" runat="server" ControlToValidate="fileUpload"
Display="Dynamic" ErrorMessage="Valid file type pdf/docx/xls/xlsx/txt/ppt/pptx." ValidationExpression="^.*\.(PDF|pdf|DOCX|docx|XLS|xls|XLSX|xlsx|TXT|txt|ppt|PPT|pptx|PPTX|ppsx|PPSX|pptm|PPTM)$"
CssClass="failureNotification">InValid file type (only pdf/docx/xls/xlsx/txt/ppt/pptx formats accepted)</asp:RegularExpressionValidator>
<asp:RequiredFieldValidator ID="rfFileUpload" runat="server" ControlToValidate="fileUpload"
CssClass="failureNotification" Display="Dynamic" ErrorMessage="Upload document is required">Upload document is required</asp:RequiredFieldValidator>
c#代码
string filePath = (sender as LinkButton).CommandArgument;
Response.ContentType = ContentType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + Path.GetFileName(filePath));
Response.WriteFile(filePath);
Response.End();
答案 0 :(得分:0)
将二进制文件传输为文本ContentType会引起您的问题。理想情况下,您的响应类型应与发送的实际文件类型匹配。否则,接收数据的代码将不知道如何正确处理它。至少您需要使用通用二进制类型application/octet-stream
此外,并非所有pdf文件都可以使用。 PDF文件使用ASCII编码,但可以包含二进制数据,当以文本格式传输时会损坏。