Значение HttpPostedFileBase равно нулю mvc

#asp.net-mvc #image-uploading #httppostedfilebase

#asp.net-mvc #загрузка изображений #httppostedfilebase

Вопрос:

Я пытался выяснить, почему моя HttpPostedFileBase возвращает значение null. Я просмотрел другие ответы, а также следовал некоторым руководствам о том, как загрузить изображение. Дело в том, что я все еще просто получаю null из HttpPostedFileBase и запроса.Файлы. Есть ли что-то, чего мне не хватает?

Мой контроллер

     [HttpPost]
    public ActionResult Save(HttpPostedFileBase PreviewImageFile)
    {

        //some code//

        if (PreviewImageFile.ContentLength > 0)
        {
            try
            {
                var uploadedImage = new Bitmap(PreviewImageFile.InputStream);
                var width = 368;
                var height = 305;
                var uploadedImageThumb = ImageHelper.CreateThumbnail(uploadedImage, width, height);

                uploadedImageThumb.Save("/path"   id   ".png", ImageFormat.Png);
                uploadedImageThumb.Dispose();
                uploadedImage.Dispose();

            }
            catch
            {

            }
        }

        //some code here//

        return Json(new { success = true });
    }
  

И моя форма из представления

                 <% using (Html.BeginForm("Save", "SaveThemes", FormMethod.Post, new { enctype = "multipart/form-data", @id = "TestForm" }))
                   {  %>

                        <label for="PreviewImageFile">Perview Image</label>
                        <input type="file" id="PreviewImageFile" name="PreviewImageFile" size="40" value="" />


                //some code here//
                <button type="submit" >save</button>
                <% } %>
  

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

1. В показанном вами примере кода нет ничего плохого. Пожалуйста, предоставьте более подробную информацию о выполняемом HTTP-запросе. Используйте Fiddler или панель инструментов разработчика вашего веб-браузера, чтобы захватить фактический запрос и показать его здесь. Заголовки HTTP полезная нагрузка тела сообщения HTTP. Также есть ли у вас какие-либо плагины javascript, которые могут перехватывать обработчик отправки формы?

2. Отладьте ваше приложение и проверьте этот запрос. Файлы. Подсчитывается при публикации вашего файла. Если это работает, вы можете использовать запрос. Файлы[0]

3. Ваше использование возврата JSON() в конце вашего ActionMethod и добавление элемента id в форму наводит меня на мысль, что вы пытаетесь загрузить файл с помощью метода AJAX. Без некоторых специальных плагинов загрузка файлов AJAX не работает * (да, есть некоторые методы HTML 5, но в целом это бесполезно). Используете ли вы jQuery или какой-либо другой JavaScript для фактической публикации формы?

4. Я использую .submit() from jquery для отправки формы и некоторый JavaScript для проверки входных данных, которые я принимаю.

5. @Themonkey180 — да, вы не можете отправить AJAX (что означает использование jQuery) форму с загрузкой файла. Вы можете проверить это с помощью jQuery, но фактическая отправка формы должна быть полностраничной публикацией на сервере.