HTML-форма flask jquery возвращает None для изображения

Новичок в веб-разработке и попытка простой загрузки изображения, цель состоит в том, чтобы попасть в s3. Но в настоящее время, когда я выбираю фотографию и отправляю запрос, ничего не возвращается, не могу понять, почему.

HTML-форма

<form name = "update_profile_image_form" id = "update_profile_image_form" class = "text-center mt-2" method = "POST" enctype = "multipart/form-data" style = "display: block;" action = "/user/update/profile-image/">
  <input type = "file" class = "form-control-file form-control-file-sm ml-3 mt-2" id = "profile_image" name = "profile_image" accept = "image/*">
  <input type = "submit" value = "Update" class = "form-control-file form-control-file-sm ml-2 mt-2 text-center btn btn-sm btn-info" style = "width: 90%;"></input>
</form>

сценарий

$("form[name=update_profile_image_form").submit(function(e) {

  var $form = $(this);
  var $error = $form.find(".error");
  var data = $form.serialize();

  $.ajax({
      url: "/user/update/profile_image",
      type: "POST",
      data: data,
      dataType: "json",
      success: function(resp) {
        window.location.href = "/account/";
        
      }
    });
  
    e.preventDefault();
  });

маршрут

@app.route('/user/update/profile_image', methods=['POST'])
def update_profile_image(): 
  return User().update_profile_image()

функция

  def update_profile_image(self):
    img = request.files.get('profile_image')
    print(img)
    
    return redirect(url_for('account'))

тоже пробовал img = request.form.get('profile_image')

Нет ошибки, print(img) возвращается как none

цель загрузить изображение, пройти в функцию, присвоить ему uuid и загрузить на s3, всем заранее спасибо!

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
171
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы не можете сериализовать изображение и отправить его как json.

Вы должны использовать объект данных формы. Однако print(img) не будет работать, так как вы не можете распечатать изображение таким образом.

В качестве альтернативы вы можете передать изображение в виде строки, преобразовав его в base64.

Другие вопросы по теме