ASP.NET MVC は、HTML フォームのファイル入力フィールドと HttpPostedFileBase の間を正しく自動的にバインドしているようです。一方、ファイル入力フィールドからバイト配列にバインドできません.試してみたところ、Base64に変換できないという例外が発生しました。以前はモデル クラスにバイト配列プロパティしかありませんでした。これは、後でオブジェクトを XML ファイルにシリアル化するために必要になるためです。
今、私はこの回避策を考え出し、うまくいきましたが、これがうまくいくかどうかはわかりません:
[DataContract]
public class Section : BaseContentObject
{
...
[DataMember]
public byte[] ImageBytes;
private HttpPostedFileBase _imageFile;
public HttpPostedFileBase ImageFile
{
get { return _imageFile; }
set
{
_imageFile = value;
if (value.ContentLength > 0)
{
byte[] buffer = new byte[value.ContentLength];
value.InputStream.Read(buffer, 0, value.ContentLength);
ImageBytes = buffer;
ImageType = value.ContentType;
}
}
}
[DataMember]
public string ImageType { get; set; }
}