我在SQL Server中将其转换为字节后存储图像,但是出现了一个问题,即无法从字节转换为字节[]。 这是代码,请发送您的宝贵回复。
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (fpPhoto.HasFile)
{
if (fpPhoto.PostedFile.ContentType == "image/jpg" ||
fpPhoto.PostedFile.ContentType == "image/jpeg" ||
fpPhoto.PostedFile.ContentType == "image/png")
{
byte[] imagebytes = new byte[fpPhoto.PostedFile.ContentLength];
int filelenght = fpPhoto.PostedFile.ContentLength;
imagebytes = fpPhoto.FileBytes;
fpPhoto.PostedFile.InputStream.Read(imagebytes, 0, filelenght);
}
}
User objUser = new User();
objUser.UserName_Pk = txtUserName.Text;
objUser.Password = txtPassword.Text;
objUser.MobileNo = txtMobileNo.Text;
objUser.Email = txtEmail.Text;
objUser.SecurityAnswer = txtAnswer.Text;
objUser.Photo = Convert.ToByte(imagebytes); // Here Error occurs
objUserBll.InsertUpdate(objUser);
}
答案 0 :(得分:0)
试试这个
如果Photo数据类型为byte[]
objUser.Photo= BitConverter.GetBytes(imagebytes);
答案 1 :(得分:0)
由于imagebytes
应该已经是字节数组(byte[]
),因此您无需转换它。只需删除Convert.ToByte()
,就可以了:
objUser.Photo = imagebytes;
如果Photo
还不是字节数组,我建议您将其数据类型更改为byte[]
,因为您显然想要保存照片,这通常意味着存储二进制数据。
另外,请查看开头imagebytes
块中名为if
的变量的声明。为了在结尾处使用变量进行赋值,您需要将声明移到if
块之外,以便之前声明变量。以下代码应该足够了(在当前形式中,您创建一个新的数组,在您为其分配FileBytes
之后立即覆盖它):
// Declare variable outside of first if block
byte[] imagebytes;
if (fpPhoto.HasFile)
{
// ...
顺便说一句:我刚刚回答了一个非常相似的问题,其代码几乎相同here。也许你在那里找到有用的东西。由于代码几乎相同并且问题已在同一时间框架内提出,我怀疑这是作业。在这种情况下,请帮助自己,确保您真正理解任务及其解决方案,即使SO上的答案可以帮助您解决某些问题。