损坏的文件Microsoft Office 2007 ASP.NET 1.1和SQL Server

时间:2011-08-10 20:24:22

标签: asp.net sql-server sql-server-2008 sql-server-2000

我正在开发一个将文件存储在数据库中的ASP.NET 1.1网站。自2001年以来,该网站一直运行良好,没有任何问题上传和下载任何类型的文件。

但是,最近客户发现当任何用户尝试下载时,所有Microsoft Office 2007文档DOCXXLSX等都已损坏。

我注意到SQL Server在DocumentContent(图像列)中添加了一个额外的字节。在上传文档之前,内容和长度都很好。但是,在存储之后,SQL Server会添加一个EXTRA Byte ....为什么?????

互联网上的许多人提供了如何下载文件的解决方案,这很棒,对我有用。

我正在寻找这个问题的答案......为什么SQL服务器会在图像列中添加额外的字符?

这是一个Asp.NET 1.1和SQL 2000,但我们只是把它移到2008年,我们仍然遇到同样的问题。

1 个答案:

答案 0 :(得分:1)

我不是100%确定你的问题是否与我的问题相同但在我的情况下,我发现问题实际上是在部分,而不是在阅读部分。例如,我原来的编写代码是这样的:

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

当我更改第一行时如下:

Dim FILE_CONTENT(0 To len - 1) As Byte 

读数错误消失了。我只是忘了VB在默认情况下默认分配N + 1个字节(O到N)而不指定下限。请参阅此处描述的类似情况:Uploaded Docx Files are getting corrupted。希望有所帮助。