5

我创建了将图像上传到 SQL Server 的代码。

这是将图像转换为字节的代码:

//Use FileInfo object to get file size.
FileInfo fInfo = new FileInfo(p);         

//Open FileStream to read file
FileStream fStream = new FileStream(p, FileMode.Open, FileAccess.Read);
byte[] numBytes = new byte[fStream.Length];
fStream.Read(numBytes, 0, Convert.ToInt32(fStream.Length));

//Use BinaryReader to read file stream into byte array.

//BinaryReader br = new BinaryReader(fStream);

//When you use BinaryReader, you need to supply number of bytes to read from file.
//In this case we want to read entire file. So supplying total number of bytes.

// data = br.ReadBytes((int)numBytes);
return numBytes;

SqlCommand这是将字节作为值添加到参数的代码:

 objCmd.Parameters.Add("@bill_Image", SqlDbType.Binary).Value = imageData;
  objCmd.ExecuteNonQuery();

但我收到错误

字符串或二进制数据将被截断。该语句已终止

我该如何克服这个问题?

4

2 回答 2

4

错误清楚地表明您正在尝试保存比字段定义允许的更多字节。

不确定您使用的是什么 sql 类型,bill_Image但存储图像的适当字段定义将是varbinary(MAX).

于 2013-03-15T13:41:35.110 回答
0

检查bill_Image数据库中列的定义。

它应该是这样的

bill_Image varbinary(X)

只需增加 X 或放 MAX 而不是数字(如果您有超过 8 000 字节的图像)

关于二进制/varbinary 类型的信息在这里

于 2013-03-15T13:42:39.007 回答