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

C# 无法将HttpPostedFileBase对象转换为字节数组,c#,asp.net-mvc,asp.net-mvc-4,image-uploading,C#,Asp.net Mvc,Asp.net Mvc 4,Image Uploading,我正在尝试创建一个方法,在该方法中,我可以传递一个图像文件并检索该图像文件的字节,以便以后可以将字节存储在数据库中。这是我的方法代码 private byte[] GetImageBytes(HttpPostedFileBase ProfilePhoto) { if (ProfilePhoto != null) { using (MemoryStream ms = new MemoryStream()) { ProfileP

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

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;
    }
}
问题是我得到了一个字节数组[0],因此没有任何内容转换成字节。在调试模式下,我可以看到ProfilePhoto不是空的,它具有Length属性等。。。我尝试了另一种方法,用下面的代码替换方法中的代码:

byte[] image = new byte[ProfilePhoto.ContentLength];
ProfilePhoto.InputStream
    .Read(image, 0, Convert.ToInt32(ProfilePhoto.ContentLength));
return image;
但同样没有成功。它返回一个数组0x0000。。。这是默认值。 你知道怎么解决这个问题吗?可能这很简单,但我不知道如何在MVC中上传文件



。我试图找到其他方法来实现这一点,但没有一种有效。

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

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

谢谢,伙计,它解决了我的问题。在等价性中,我用第二种方法发现了这个问题。我必须做
ProfilePhoto.InputStream.Position=0然后一切正常:)干杯。