웹 응용 프로그램이 aspx로 실행되고 있습니다. 이는 기존의 응용 프로그램입니다. 제출하는 동안 사용자는 지원 문서 (일반적으로 pdf로 변환 된 그림)를 SQL 서버로 업로드하여 바이너리로 저장하고 승인 중에 여러 번 다운로드 할 수 있습니다.웹 사이트에서 다운로드 할 때 Adobe 파일에서 PDF 파일을 열 수는 없지만 가장자리에서 열 수 있습니다.
그러나 우리는 이제 사용자가 Adobe의 Adobe Reader에서 pdf 파일을 열 수없고 "파일이 손상되어 복구 할 수 없습니다"라는 문제가 발생하기 시작했습니다. 에러 메시지. MS Edge에서 열 수 있기 때문에 실제로 손상되지 않습니다. pdf 파일을 업로드하기 전에 제대로 열 수 있음을 확인했습니다.
HttpPostedFile file = this.attachmentUploader.PostedFile;
if (file == null)
{
file = Session["postedFile"] as HttpPostedFile;
}
if (file != null)
{
var fileName = this.attachmentUploader.FileName;
fileName = fileName.Length >= 100 ? string.Concat(fileName.Substring(0, 50).Trim(), ".pdf") : fileName;
Attachment attachment = new Attachment()
{
FileName = fileName,
File = this.attachmentUploader.FileBytes
};
db.Attachments.Add(attachment);
db.SaveChanges();
}
이 다운로드 코드
byte[] file = null;
// Code here to pull file from db
if (file != null)
{
Response.Buffer = true;
Response.ContentType = "application/pdf";
Response.AddHeader("Content-Disposition", "attachment;filename=support_doc.pdf");
Response.OutputStream.Write(file, 0, file.Length);
}
감사 어떤 도움을입니다!
* "여전히 MS Edge에서 열 수 있으므로 실제로 손상되지 않습니다."* - 잘못되었습니다. 우연히 한 사람의 뷰어가 실제로 가비지가 될 수있는 것을 정확하게 표시한다고해서 데이터가 가비지가 아님을 의미하지는 않습니다. 피해를 비교하고 분석 할 수 있도록 PDF를 좋은 버전과 나쁜 버전으로 공유 한 경우 도움이 될 수 있습니다. – mkl