我开发了一个mvc4 razor web应用程序来上传一个人的图像并将其保存在一个自定义的loaction(文件夹)中。
它有一个文件上传控件,一个文本框和一个按钮。当我使用文件上传控件上传图像时,我需要将其保存在自定义位置,如“D:/ Employee / ContactImage”,文件名应该是在文本框中键入的值。
这是视图中的代码
<div id="partial">
@{Html.RenderPartial("WholeSaleUserDetail");}
@using (Html.BeginForm("FileUpload", "WholeSaleTrade", new RouteValueDictionary(new { @class = "mainForm" }), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input name="uploadFile" type="file" id="fileUpload"/>
<input type="submit" value="Save Image" id="saveImage" />
<input type="text" id="imageName">
}
<div style="width: 200px; height: 200px;">
<img id="empimage" src="../../Images/no_image.jpg" alt="" /></div>
</div>
这是控制器类的代码
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase uploadFile, string imageName)
{
var j = new ImageJob(uploadFile, "~/Img/resize/" + imageName, new ResizeSettings(300, 300, FitMode.Stretch, "Jpeg"));
j.Build();
string imageUrl = PathUtils.GuessVirtualPath(j.FinalPath);
return Json(imageUrl, JsonRequestBehavior.AllowGet);
}
我需要做的就是将文本框的值作为文件名传递,并将图像保存在给定的位置。 请帮帮我..
答案 0 :(得分:0)
我发现代码有问题,输入字段的NAME需要与控制器参数匹配。在你的情况下,html输入没有名称,试试这个。
<div id="partial">
@{Html.RenderPartial("WholeSaleUserDetail");}
@using (Html.BeginForm("FileUpload", "WholeSaleTrade", new RouteValueDictionary(new { @class = "mainForm" }), FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input name="uploadFile" type="file" id="fileUpload"/>
<input type="submit" value="Save Image" id="saveImage" />
<input type="text" id="imageName" name="uploadFile">
}
<div style="width: 200px; height: 200px;">
<img id="empimage" src="../../Images/no_image.jpg" alt="" /></div>
</div>
对于控制器,您可以通过发布的文件获取文件名(它有一个属性)
[HttpPost]
public ActionResult FileUpload(HttpPostedFileBase uploadFile)
{
var j = new ImageJob(uploadFile, "~/Img/resize/" + uploadFile.FileName, new ResizeSettings(300, 300, FitMode.Stretch, "Jpeg"));
j.Build();
string imageUrl = PathUtils.GuessVirtualPath(j.FinalPath);
return Json(imageUrl, JsonRequestBehavior.AllowGet);
}