Как загрузить изображение с помощью элемента управления загрузкой файлов и сохранить его в другом месте

Я разработал веб-приложение mvc4 razor, чтобы загрузить изображение человека и сохранить его в пользовательском локации (папке).

у него есть элемент управления загрузкой файлов, текстовое поле и кнопка. Когда я загружаю изображение с помощью элемента управления загрузкой файлов, мне нужно сохранить его в произвольном месте, например «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);
    }

все, что мне нужно сделать, это передать значение текстового поля в качестве имени файла и сохранить изображение в указанном месте. пожалуйста, помогите мне здесь ..


person sanzy    schedule 26.06.2013    source источник
comment
с какой проблемой вы столкнулись?   -  person Andrew Barber    schedule 26.06.2013
comment
Основная проблема в том, что я не могу передать значение текстового поля в качестве имени файла в контроллер. в классе контроллера имя файла должно быть присвоено имени параметра imageName   -  person sanzy    schedule 26.06.2013
comment
Вы пробовали добавить на вход name = imageName? как насчет проверки FormCollection, чтобы увидеть, отправлено ли оно обратно?   -  person Slicksim    schedule 27.06.2013


Ответы (1)


Я обнаружил проблему с вашим кодом, ИМЯ поля ввода должно совпадать с параметром контроллера. В вашем случае у ввода 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);
}
person Overmachine    schedule 11.07.2013