在我的视图中使用以下标记:
<form action="Categories/Upload" enctype="multipart/form-data" method="post">
<input type="file" name="Image">
<input type="submit" value"Save">
</form>
在我的控制器中:
public ActionResult Upload(FormCollection form)
{
var file = form["Image"];
}
文件的值为null
。
如果我使用不同的控制器控制器在不同的视图中尝试它,它使用相同的代码。
我在Vista上有VS2008,MVC 1.0。
为什么?
马尔科姆
答案 0 :(得分:34)
使用HttpPostedFileBase
作为动作的参数。另外,添加AcceptVerb
属性设置为POST
。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Upload(HttpPostedFileBase image)
{
if ( image != null ) {
// do something
}
return View();
}
此代码完全符合ASP.NET MVC的精神/设计。
答案 1 :(得分:7)
不要在这里或任何事情上挑剔,但这里的代码应该是如何看的,因为Daniel在他提供的代码中遗漏了一些细节......
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UploadPlotImage(HttpPostedFileBase image)
{
if ( image != null )
{
// do something
}
return View();
}
答案 2 :(得分:6)
试试这段代码:
public ActionResult Upload()
{
foreach (string file in Request.Files)
{
var hpf = this.Request.Files[file];
if (hpf.ContentLength == 0)
{
continue;
}
string savedFileName = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory, "PutYourUploadDirectoryHere");
savedFileName = Path.Combine(savedFileName, Path.GetFileName(hpf.FileName));
hpf.SaveAs(savedFileName);
}
...
}
答案 3 :(得分:2)
即使我遇到问题,
中的图片中的值为nullpublic ActionResult UploadPlotImadge(HttpPostedFileBase image)
之前我没有添加我添加的[AcceptVerbs(HttpVerbs.Post)]
。即使在添加之后,它也无法正常工作,因为我遗漏的第二部分enctype="multipart/form-data"
需要在表单标记中。
现在它适合我......
答案 4 :(得分:0)
尝试此类及以下操作并修复AppSetting中的文件夹路径。
配置:
<appSettings>
<add key="UploadFolerPath" value="..Your folder path" />
</appSettings>
视图: -
<form action="Account/AddImage" id="form_AddImage" method="post" enctype="multipart/form-data">
<input type="file" id="Img" name="Img" class="required" />
<input type="submit" value="Upload" id="btnSubmit" />
</form>
班级: -
public class FileUpload
{
public string SaveFileName
{
get;
set;
}
public bool SaveFile(HttpPostedFileBase file, string FullPath)
{
string FileName = Guid.NewGuid().ToString();
FileName = FileName + System.IO.Path.GetExtension(file.FileName);
SaveFileName = FileName;
file.SaveAs(FullPath + "/" + FileName);
return true;
}
}
//发布行动
[HttpPost]
public ActionResult AddImage(FormCollection Form)
{
FileUpload fileupload = new FileUpload();
var image="";
HttpPostedFileBase file = Request.Files["Img"];
if (file.FileName != null && file.FileName != "")
{
if (upload.ContentLength > 0)
{
fileupload.SaveFile(Request.Files["Img"], Server.MapPath(AppSetting.ReadAppSetting("UploadFolerPath")));
image = fileupload.SaveFileName;
// write here your Add/Save function
return Content(image);
}
}
else
{
//return....;
}
}