我正在开发一个将文件存储在数据库中的ASP.NET 1.1网站。自2001年以来,该网站一直运行良好,没有任何问题上传和下载任何类型的文件。
但是,最近客户发现当任何用户尝试下载时,所有Microsoft Office 2007文档DOCX
,XLSX
等都已损坏。
我注意到SQL Server在DocumentContent
(图像列)中添加了一个额外的字节。在上传文档之前,内容和长度都很好。但是,在存储之后,SQL Server会添加一个EXTRA Byte ....为什么?????
互联网上的许多人提供了如何下载文件的解决方案,这很棒,对我有用。
我正在寻找这个问题的答案......为什么SQL服务器会在图像列中添加额外的字符?
这是一个Asp.NET 1.1和SQL 2000,但我们只是把它移到2008年,我们仍然遇到同样的问题。
答案 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。希望有所帮助。