1

我正在使用以下 bcp 命令从文件流 db 中导出二进制文件,并且所有其他文件似乎都可以正常导出(即 txt、pdf、rtf、图像文件等),但 docx、xlsx 和 pptx 文件除外。我能够导出这些文件(即 docx、xlsx 和 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 无法打开,因为内容有问题,然后 Excel 发现无法读取的内容,您要恢复此文档的内容吗?

另外,我的 files.fmt 文件中有这个:

10.0
1
1 SQLBINARY 0 0 "\t" 1 内容 ""

任何帮助都感激不尽。

4

1 回答 1

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。希望有帮助。

于 2014-06-16T23:35:04.067 回答