我正在使用MVC4在C#中开发一个项目。 我的问题在这里:
我正在尝试将byte []转换为HttpPostedFileBase,但它总是返回Null(即使byte []包含数据)。这里是我的代码:
public override bool IsValid(object value) {
HttpPostedFileBase file = value as HttpPostedFileBase
}
该代码是我的IsValid函数的一部分,我正在验证上传的图像是否有效(小于1MB,只是'jpg'或'png'等)。 提前谢谢。
答案 0 :(得分:2)
<form enctype="multipart/form-data" method="post">
<div> bla bla
</div>
</form>
?
编辑:method =“post”
+
[HttpPost]
发布您的控制器代码,否则请尝试以上
答案 1 :(得分:2)
使用Html帮助程序类,您可以按如下方式编写
@using (Html.BeginForm("Create", "Company", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="LogoFileUp" id="LogoFileUp"></span>
}
在创建后期操作中,您可以获得以下值:
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Create( HttpPostedFileBase LogoFileUp)
{
// bla bla ...
}
答案 2 :(得分: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)
}
}