我的c#代码存在一些问题,用于上传某个文件...在控制器文件中检测到空。
我的HTML代码
@using (Html.BeginForm("Index", "UploadHistory",FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="uploadFile" id="uploadFile" />
<input type="submit" value="Upload File" id="btnSubmit" />
}
和我控制器的代码
[HttpPost]
public ActionResult Index(HttpPostedFileBase uploadFile)
{
// Verify that the user selected a file
if (uploadFile != null && uploadFile.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(uploadFile.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
uploadFile.SaveAs(path);
}
// redirect back to the index action to show the form once again
return RedirectToAction("Index");
}
为什么我的上传文件检测到null?我用C#mvc 4和razor谢谢你。
[解决] 只是在javascript方法帖子中出错。
答案 0 :(得分:1)
请参阅此链接
简而言之
使用
public ActionResult Index(HttpPostedFileBase uploadFile)
同时更改
<input type="file" name="file" id="file" />
到
<input type="file" name="uploadFile" id="uploadFile" />
答案 1 :(得分:0)
我不确定模型绑定在这种情况下是否有效。您需要使用HttpPostedFileBase
作为控制器操作的参数,或者需要使用Request.Files
选项。
使用Request.Files选项。
foreach (string file in Request.Files)
{
HttpPostedFile hpf = Request.Files[file] as HttpPostedFile;
if (hpf.ContentLength == 0)
continue;
string savedFileName = Path.Combine(
AppDomain.CurrentDomain.BaseDirectory,
Path.GetFileName(hpf.FileName));
hpf.SaveAs(savedFileName);
}
编辑:在这里,我发现了一个使用类似场景的博客(模型绑定)。它可能会对您有所帮助 - http://cpratt.co/file-uploads-in-asp-net-mvc-with-view-models/
答案 2 :(得分:0)
使用以下
[HttpPost]
public ActionResult Index(HttpPostedFileBase file)
{
if (file != null && file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(Server.MapPath("~/App_Data/uploads"), fileName);
file.SaveAs(path);
}
return RedirectToAction("Index");
}
主要在参数
中使用HttpPostedFileBase
答案 3 :(得分:0)
以下内容对您有用:
<强>模型强>
public class UploadFileModel
{
public UploadFileModel()
{
Files = new List<HttpPostedFileBase>();
}
public List<HttpPostedFileBase> Files { get; set; }
}
查看强>
@using (Html.BeginForm("Index", "Home",FormMethod.Post, new { enctype = "multipart/form-data" }))
{
Html.TextBoxFor(m => m.Files.Files, new { type = "file", name = "Files" })
<input type="submit" value="Upload File" id="btnSubmit" />
}
<强>控制器强>
[HttpPost]
public ActionResult Index(UploadFileModel model)
{
var file = model.Files[0];
return View(model);
}