2011-08-10 5 views
1

데이터베이스에 파일을 저장하는 ASP.NET 1.1 웹 사이트에서 작업하고 있습니다. 이 웹 사이트는 2001 년부터 모든 유형의 문서를 업로드하고 다운로드하는 데 아무런 문제없이 잘 작동했습니다. 그러나 고객은 최근 Microsoft Office 2007 문서 DOCX, XLSX 등이 사용자가 다운로드하려고 시도 할 때 손상되었음을 발견했습니다.손상된 파일 Microsoft Office 2007 ASP.NET 1.1 및 SQL Server

내가 알아챈 점은 SQL Server가 DocumentContent (이미지 열)에 여분의 바이트를 추가한다는 것입니다. 문서를 업로드하기 전에 내용과 길이가 좋습니다. 그러나 저장 후 SQL Server는 EXTRA Byte를 추가합니다. WHY ?????

인터넷에있는 많은 사람들이 파일을 다운로드하는 방법에 대한 해결책을 제공했습니다.

이 질문에 대한 답변을 찾고 있습니다 ... SQL Server가 이미지 열에 추가 바이트를 추가하는 이유는 무엇입니까?

그것은 Asp.NET 1.1과 SQL 2000이지만 우리는 2008 년으로 옮겼지만 여전히 동일한 문제가 있습니다.

+0

@ marc_s 사이트가 2001 년부터 실제로 온라인 상태라면 그 당시의 기술 수준을 가정하는 것이 합리적입니다. 그리고 그것이 작동한다면 ... –

+0

그것은 ASP 1.1 VB입니다. – Sami

+0

Michael, 데이터베이스는 SQL Server 2000이며 2008 년으로 업그레이드했지만 여전히 동일한 문제가 있습니다. 지금은 열 유형을 변경하려고 할 것입니다. 그러나 열이 웹 사이트의 많은 곳에서 사용되기 때문에 올바른 생각이라고 생각하지 않습니다. – Sami

답변

1

귀하의 문제가 귀하의 문제와 동일 할 경우 100 % 확신 할 수는 없지만 문제가 실제로 부분 인 부분에있는 것으로 나타났습니다. 예를 들어, 내 원래의 코드를 작성하는이 같았다 : 읽기 오류가 사라

Dim FILE_CONTENT(0 To len - 1) As Byte 

:

Dim FILE_CONTENT(len) As Byte 
File.InputStream.Read(FILE_CONTENT, 0, len) 
SaveFileToDatabase(FILE_NAME, CONTENT_TYPE, FILE_CONTENT) 

나는 다음과 같이 첫 번째 줄을 변경합니다. 방금 VB가 실제로 하한을 지정하지 않고 치수를 지정할 때 N + 1 바이트 (N to O)를 기본적으로 할당한다는 사실을 잊어 버렸습니다. 여기에 설명 된 유사한 상황을 참조하십시오 : Uploaded Docx Files are getting corrupted. 희망이 도움이됩니다.

관련 문제