0

MVC4 を使用して C# でプロジェクトを開発しています。ここで私の質問:

byte[] を HttpPostedFileBase に変換しようとしていますが、常に Null を返します (byte[] にデータが含まれていても)。ここに私が持っているコード:

public override bool IsValid(object value)        {               
HttpPostedFileBase file = value as HttpPostedFileBase
}

そのコードは、アップロードされた画像が有効かどうかを検証する IsValid 関数の一部です (1MB 未満、単に「jpg」または「png」など)。前もって感謝します。

4

3 に答える 3

2

Html ヘルパー クラスを使用すると、次のように記述できます。

@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    <input type="file" name="LogoFileUp" id="LogoFileUp"></span>
}

Create Post Action では、次のように値を取得できます。

[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create( HttpPostedFileBase LogoFileUp)
{
   // bla bla ...
}
于 2013-08-12T08:59:47.190 に答える
1

Elvin の回答に加えて、許可したい拡張機能を含むデータ注釈を追加できるモデルを使用できます: http://msdn.microsoft.com/en-us/library/ee256141%28VS.100%29.aspx

モデル: CompanyModel.cs

public class CompanyModel
{
    [Display(Name = "Logo")]
    [File(AllowedFileExtensions = new string[] { ".jpg", ".gif", ".tiff", ".png" }, MaxContentLength = 1024 * 1024 * 30, ErrorMessage = "Invalid File")]
    public HttpPostedFileBase LogoFileUp{ get; set; }

    //you can add other properties if you like, for example companyname
}

景色

@model CompanyModel
@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.ValidationMessageFor(model => model.LogoFileUp)
    @Html.LabelFor(model => model.LogoFileUp)
    @Html.TextBoxFor(model => model.LogoFileUp, new { type = "file" })
}

アクション

[HttpPost]
public ActionResult Create(CompanyModel company)
{

    if (ModelState.IsValid)
    {
        //save company ...
    }else{
        return View(company)
    }
}
于 2014-12-04T15:30:05.393 に答える