加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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服务&amp ;;上传了一个.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长度.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读