无法将HttpPostedFileBase对象转换为字节数组

时间:2016-06-22 18:19:51

标签: c# asp.net-mvc asp.net-mvc-4 image-uploading

我正在尝试创建一个方法,我可以传递图像文件并检索该图像文件的字节,所以稍后我可以将字节存储在数据库中。这是我的方法代码。

private byte[] GetImageBytes(HttpPostedFileBase ProfilePhoto)
{
    if (ProfilePhoto != null)
    {
        using (MemoryStream ms = new MemoryStream())
        {
            ProfilePhoto.InputStream.CopyTo(ms);
            byte[] array = ms.GetBuffer();
            return array;
        }
    }
    else
    {
        return null;
    }
}

问题是我得到一个字节数组array [0],所以没有任何东西转换成字节。在调试模式下,我可以看到ProfilePhoto不是null并且它具有Length属性等...我尝试了另一种方法,用下面的代码替换方法内的代码:

byte[] image = new byte[ProfilePhoto.ContentLength];
ProfilePhoto.InputStream
    .Read(image, 0, Convert.ToInt32(ProfilePhoto.ContentLength));
return image;

但又没有成功。它返回一个数组0x0000 ...这是默认值。 知道如何解决这个问题吗?可能它很简单,但我不知道如何在MVC上传文件

。我试图找到其他方法来做到这一点,但没有一个工作。

1 个答案:

答案 0 :(得分:3)

在复制之前,您需要首先寻找流的开头:

ProfilePhoto.InputStream.Seek(0, SeekOrigin.Begin);
ProfilePhoto.InputStream.CopyTo(ms);