1

我开发了一个 mvc4 razor Web 应用程序来上传一个人的图像并将其保存在自定义位置(文件夹)中。

它有一个文件上传控件、一个文本框和一个按钮。当我使用文件上传控件上传图像时,我需要将其保存在自定义位置,如“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);
    }

我需要做的就是将文本框的值作为文件名传递并将图像保存在给定位置。请在这里帮我..

4

1 回答 1

0

我发现您的代码有问题,输入字段的名称需要与控制器参数匹配。在您的情况下,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);
}
于 2013-07-11T16:04:21.313 回答