字节[]转换的字节数?

时间:2014-02-22 07:46:10

标签: c# asp.net

我在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);
}

2 个答案:

答案 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上的答案可以帮助您解决某些问题。