как получить файл изображения?в питоне?Джанго каркас отдыха - PullRequest
0 голосов
/ 30 ноября 2018
class DemoAPIView(APIView):
    parser_classes = (JSONParser, FormParser, MultiPartParser)

    def post(self, request, format=None):
        data = request.data
        attached_file = request.FILES['attached_file']
        description_image = data.get('descriptionImage', None)
        attachment = dict(object_id=174, project=1, attached_file=attached_file,
                          description=description_image)
        header = {'Authorization': 'Bearer eyJ1c2VyX2F1dGhlbnRpY2F0aW9uX2lkIjoxNn0:1gSTf6:KbOb0yhqC-qVPTEPRoiVBBZjN6M'}
        r = requests.post('demo/api/v1/issues/attachments', data=attachment, headers=header)
        print(r.json())
        return Response({'error': 'ERROR XD'}, status=status.HTTP_400_BAD_REQUEST)

и ошибка, с которой меня загрузил API, следующая:

{'attached_file': ['No file was submitted. Check the encoding type on the form.']}

- это изображение, которое я отправил с клиента.распечатайте вложенный файл и просто покажите мне URL, видимо, в этом проблема.Есть ли способ получить полный файл?

Форма клиента:

const bodyFormData = new FormData();
            if (typeof this.image !== 'string') {
              bodyFormData.append('attached_file', this.image);
              bodyFormData.append('descriptionImage', this.descriptionImage);
            }
            this.axios.post('/api/', bodyFormData,
              { headers: { 'Content-Type': 'multipart/form-data' } })
              .then((response) => {
                this.isSending = false;
                this.$snackbar.open(response.data.results);
                this.feedback = {};
                this.image = {};
              }).catch((err) => {
                this.$snackbar.open({ message: err.response.data.error, type: 'is-danger' });
                this.isSending = false;
              });

1 Ответ

0 голосов
/ 30 ноября 2018

Отправленная форма, вероятно, не enctype="multipart/form-data.

Как указано в Django документах :

Обратите внимание, что request.FILES будет содержать данные только в том случае, если метод запроса был POST , а , который отправил запрос, имеет атрибут enctype = "multipart / form-data" .В противном случае request.FILES будет пустым.

Для DRF вам, вероятно, понадобится FileUploadParser (см. this )

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...