我正在使用下面的bcp命令从文件流db中导出二进制文件,并且所有其他文件似乎都被正常导出(即txt,pdf,rtf,图像文件和等),除了docx,xlsx& pptx文件。我能够导出这些文件(即docx,xlsx和amp; pptx),但是在打开这些文件时我收到警告/错误消息,然后它正确打开文件。
BCP "SELECT content FROM [dbo].[Contents] WHERE ID=1" queryout "C:\Temp\" -T -S (local) -f C:\Temp\files.fmt
打开docx,xlsx&时,我收到以下消息pptx文件:
XLSX - Excel发现了不可读的内容,您想要恢复此文档的内容吗? DOCX - 文件test.docx无法打开bcos内容有问题,然后Excel发现不可读的内容,你想恢复这个文件的内容吗?
另外,我在files.fmt文件中有这个:
10.0
1
1 SQLBINARY 0 0“\ t”1内容“”
非常感谢任何帮助。
答案 0 :(得分:0)
我不是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。希望有所帮助。