我为上传文件创建了此代码。但它不会在我创建的App_Data / Uploads文件夹中上传任何文件。 这是代码>>
In view>>
<form action="~/Views/Home/_SaveUpdate" method="post" enctype="multipart/form-data">
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
</form>
And this my Handler>>
[HttpPost]
public ActionResult Index(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(HttpContext.Server.MapPath("~/App_Data/Uploads"), fileName);
file.SaveAs(path);
}
}
return RedirectToAction("Index");
}
请告诉我还有什么需要做的。另外,如何生成链接以下载文件。
答案 0 :(得分:0)
首先,表单的操作现在指向~/Views/Home/_SaveUpdate
,而根据您的后操作,该操作应为/Home/Index
。
其次,确保在App_Data文件夹中创建了Upload文件夹。
这应该解决上传问题。
查看:
<form action="/Home/Index" method="post" enctype="multipart/form-data">
<label for="file1">Filename:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
</form>
如果要显示所有上传文件的下载链接,则应将图像存储在与App_Data不同的文件夹中。出于安全原因,无法直接访问App_Data文件夹。
可以找到显示目录中文件的一个很好的示例here
答案 1 :(得分:0)
我拿了你的代码并做了一些改动来测试它......它确实有效。
对于我的测试,我刚刚更改了操作的名称。 你确定你的表格行动是否正确?
<form action="~/Views/Home/_SaveUpdate"
因为它与处理程序的名称不匹配:
public ActionResult Index(IEnumerable ....
我的测试: 确保您的上传文件夹存在或您将获得例外。 处理程序:
[HttpPost]
public ActionResult FileUploadPost(IEnumerable<HttpPostedFileBase> files)
{
foreach (var file in files)
{
if (file.ContentLength > 0)
{
var fileName = Path.GetFileName(file.FileName);
var path = Path.Combine(HttpContext.Server.MapPath("~/Uploads"), fileName);
file.SaveAs(path);
}
}
return RedirectToAction("Index");
}
观点:
<form action="FileUploadPost" method="post" enctype="multipart/form-data">
<label for="file1">Filename1:</label>
<input type="file" name="files" id="file1" />
<label for="file2">Filename2:</label>
<input type="file" name="files" id="file2" />
<input type="submit" />
</form>