2016-04-15 6 views
1

Я разрабатываю веб-приложение с использованием углового, python и Flask. В моем приложении есть форма, где пользователю нужно ввести некоторые данные и загрузить свою фотографию. Я хочу реализовать загрузку файла на сервер с помощью углового. Я увидел, что мне нужно использовать FormData() и привязать данные из HTML к угловому, используя «watch». Часть javascript понятна. Я не понимаю, как я могу получить данные со стороны Python.Загрузка файла angularjs + python (Flask) на сервер

Это мой HTML -

<form enctype="multipart/form-data" ng-submit="submitGuideDetailsForm()"> 
    <div class="form-group"> 
    <label for="usr">Add your photo:</label> 
    <input type='file' class="form-control" name='file' onchange="angular.element(this).scope().uploadFile(this.files)"> 
    </div> 
</form> 

Это мой угловой -

$scope.uploadFile = function(files) { 
      $scope.file = new FormData(); 
      $scope.file.append("file", files[0]); 
     }; 
$scope.submitGuideDetailsForm= function() { 
    $http.post('/uploadFile', $scope.file, { 
      headers: {'Content-Type': undefined }, 
      transformRequest: angular.identity 
      }).success(function(results) 
      { 
       $log.log('success load file') 
      }).error(function(error) 
      { 
       $log.log('error load file!!!!!') 
       $log.log(error); 
      }); 
     }; 

Я хочу, чтобы получить файл на стороне сервера, используя питона и флягу -

@app.route('/uploadFile', methods=['POST']) 
def uploadFile(): 
    json_data = request.json 
    print(json_data) 
    status = 'success' 
    return jsonify({'result': status}) 

Я не знаю, как получить данные из объекта «запрос». request.json не работает.

Просьба сообщить мне, что я делаю неправильно. Как я могу получить данные из объекта «запрос»? Нужно ли кодировать данные в файл? Как отправить данные клиенту? Нужно ли его закодировать? Я не нашел полного примера, используя угловые и python/фляги, загружая файл на сервер, сохраняя его и загружая его клиенту. Спасибо большое, работа Дина

+0

попробовать '' request.file' или request.files' – reptilicus

ответ

0

Команда «request.files» получает меня следующий объект -

ImmutableMultiDict([('file', <FileStorage: 
u'12132638_10153196350425732_1151540092606190338_o.jpg' 
('image/jpeg')>)]) 

Я не понимаю, как я могу сохранить его на сервере. Как получить только имя файла из этого объекта И как отправить его обратно на клиентскую сторону?

Спасибо большое, Dina

0

файл можно получить по file = request.files['file'] после этого, вы можете получить имя файла по file.filename.encode("utf8")

 Смежные вопросы

  • Нет связанных вопросов^_^