我通过WCF服务中的SFTP会话接收文件.此文件正在读入MemoryStream对象.我已成功将此流输出到磁盘上的文件中.验证文件已成功传输(这是使用FileStream而不是MemoryStream完成的).
但是当我将这个MemoryStream转换为byte []以将其保存到SQL Server表(将列声明为VARBINARY(MAX))时,似乎8个字节被预先添加到该文件中.
例如,我使用WCF SFTP服务& ;;上传了一个.txt文件.将其保存到数据库中.然后,使用BCP,我将文件输出到磁盘.打开文件后,第一行前面加上“U”(“U”和7个空格).
Office文档也是如此.我已经完成了与上面提到的.xls文件相同的过程,它在开始时是49Kb大.但是在使用BCP输出时,文件已损坏并且已损坏.是50Kb大.
奇怪的是,.pdf文件似乎保存了&正确导出.
我正在使用的代码的几个片段:
将流转换为字节数组
var stream = (MemoryStream)data; stream.Seek(0, SeekOrigin.Begin); byte[] m_Bytes = stream.ToArray();
将字节数组保存到SQL Server
cmd.Parameters.Add("@File", System.Data.SqlDbType.VarBinary, -1).Value = file;
使用BCP将文件从SQL Server导出到文件
bcp "SELECT [File] FROM SFTPUpload.dbo.Upload" queryout "C:\SFTP\Test.txt" -T -N -S Server_Name\Instance_Name
这可能是我用来将文件保存到数据库的方法的问题,或者我是如何使用BCP检索文件的?后者似乎更有可能,因为将文件直接保存到磁盘不会破坏它.
任何帮助或建议将不胜感激.
BCP以BCP格式写出数据. BCP格式必须包含的不仅仅是二进制数据,因为它支持多个列和行.使用一种精确保留其字节的方法导出二进制数据.我的猜测是最初的8个字节是blob长度.
查看更多关于c# – 保存到SQL Server时附加的文件前缀为文件的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did69295