Загрузка и изменение нового имени для изображения в ASP.NET MVC

#javascript #c# #asp.net #asp.net-mvc

#javascript #c# #asp.net #asp.net-mvc

Вопрос:

Я хочу, чтобы при загрузке изображения после этого я вводил новое имя для изображения и после нажатия кнопки отправки затем изображению будет изменено новое имя, и оно будет сохранено в path проекта, пожалуйста, подскажите мне, как написать код? большое спасибо

введите код здесь

     <div class="row">
        <div class="col-sm-6">
            Image Name: <input type="text" id="name"/>

            <input type="file" class="form-control" id="files" name="files">

            <input type=submit/>
        </div>
    </div>
  

код:

public ActionResult UploadFiles(файлы HttpPostedFileBase) {

         string newFileName = "";

        if (files != null)
        {
            string path = HttpContext.Server.MapPath(@"~/Data/images");

            bool exists = Directory.Exists(path);

            if (!exists)
                Directory.CreateDirectory(path);

            string extension = Path.GetExtension(files.FileName);
            newFileName = Guid.NewGuid()   extension;
            string filePath = Path.Combine(path, newFileName);
            files.SaveAs(filePath);

        }
        return View();
    }
  

Комментарии:

1. Привет, Гемки, мы не собираемся направлять вас при написании кода. Вам нужно будет сделать это самостоятельно. Если вы что-то пробовали, мы будем рады помочь вам при возникновении проблем. Что вы пробовали, где вы застряли, опубликуйте фрагмент вашего кода, чтобы помочь нам направлять вас.

2. Я отредактировал и добавил свой код на вопрос, как указано выше, спасибо за ваш ответ

Ответ №1:

Из представления передайте значение #name в метод контроллера UploadFiles вместе с файлами в виде параметров.

Контроллер:

 public ActionResult UploadFiles(HttpPostedFileBase files, string newName) {

        string newFileName = "";

        if (files != null)
        {
            string path = HttpContext.Server.MapPath(@"~/Data/images");

            bool exists = Directory.Exists(path);

            if (!exists)
                Directory.CreateDirectory(path);

            string extension = Path.GetExtension(files.FileName);
            newFileName = newName.Trim()   extension; //pass newName here
            string filePath = Path.Combine(path, newFileName);
            files.SaveAs(filePath);

        }
        return View();
    }
  

Вы также можете добавить текущую дату и время в имя файла:

 newFileName= DateTime.Now.ToString("yyyyMMdd")   "-"   newName.Trim()   extension;
  

Комментарии:

1. Я редактирую ваш код, но он не может получить новое имя image из ввода (текст)

2. Не могли бы вы попробовать поискать «Как передавать значения из представлений в контроллер в виде параметров ActionResult в mvc»

3. Дорогой Джимеш, я исправил проблему при изменении нового имени для изображения, спасибо за вашу помощь. 🙂

4. @GemkyLa Пожалуйста, примите ответ, если он помог вам решить проблему. Таким образом, другие могут получить от него помощь.

5. Дорогой Джимеш: Да, спасибо. Но у меня проблема с изменением размера изображения, это проблема с содержимым в изображении, при изменении размера нового изображения оно будет отличаться от изображения ранее. он потерял часть ширины и высоты изображения. Я хочу, чтобы при изменении размера оно было таким же маленьким, как изображение ранее, и содержимое не могло измениться в изображении. Пожалуйста, помогите мне, если вы можете это сделать. Спасибо