c# – 保存到SQL Server时附加的文件前缀为文件
发布时间:2020-12-16 02:03:23 所属栏目:百科 来源:网络整理
导读:我通过WCF服务中的SFTP会话接收文件.此文件正在读入MemoryStream对象.我已成功将此流输出到磁盘上的文件中.验证文件已成功传输(这是使用FileStream而不是MemoryStream完成的). 但是当我将这个MemoryStream转换为byte []以将其保存到SQL Server表(将列声明为V
我通过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:SFTPTest.txt" -T -N -S Server_NameInstance_Name 这可能是我用来将文件保存到数据库的方法的问题,或者我是如何使用BCP检索文件的?后者似乎更有可能,因为将文件直接保存到磁盘不会破坏它. 任何帮助或建议将不胜感激. 解决方法
BCP以BCP格式写出数据. BCP格式必须包含的不仅仅是二进制数据,因为它支持多个列和行.使用一种精确保留其字节的方法导出二进制数据.
我的猜测是最初的8个字节是blob长度. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |