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 回答
2
<form enctype="multipart/form-data" method="post">
<div> bla bla
</div>
</form>
?

编辑:方法=“发布”

+

[HttpPost]

请发布您的控制器代码,否则请在上面尝试

于 2013-08-12T08:54:41.993 回答
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 回答