Python запрашивает публикацию GIF-файлов в виде потока октетов вместо правильного типа MIME - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь повторить следующий вызов curl в запросах python3.Однако, когда он отправляет файл, по какой-то причине его mimeType отправляется в виде application / octet-stream с размером 0. Я пробовал все варианты вызовов запросов, насколько я могу представить, и я даже старалсякодирование mimeType и размера, но оно не меняет запрос, который видит мой веб-сервер.

Вот вызов curl, который я хочу повторить:

curl -X POST \
  http://myurl/api/v1/content/createFile \
  -H 'cache-control: no-cache' \
  -H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
  -H 'postman-token: c35cc623-2cd8-1143-ba64-5870156f7498' \
  -F apiKey=ABCD \
  -F file=@bear.gif

Вот код Python, который яя пытаюсь:

import requests
files = {
    'apiKey': (None, 'ABCD'),
    'file': ('bear.gif', open('bear.gif', 'rb')),
}
url = 'http://myurl/api/v1/content/createFile'
response = requests.post(url, files=files)

Вот что мой веб-сервер видит из вызова curl:

"apiKey" => "ABCD"
"file" => UploadedFile {#323 ▼
  -test: false
  -originalName: "bear.gif"
  -mimeType: "image/gif"
  -size: 1283057
  -error: 0
  #hashName: null
  path: "/tmp"
  filename: "phpizaC5J"
  basename: "phpizaC5J"
  pathname: "/tmp/phpizaC5J"
  extension: ""
  realPath: "/tmp/phpizaC5J"
  aTime: 2018-06-01 16:20:30
  mTime: 2018-06-01 16:20:32
  cTime: 2018-06-01 16:20:32
  inode: 1441804
  size: 1283057
  perms: 0100600
  owner: 48
  group: 48
  type: "file"
  writable: true
  readable: true
  executable: false
  file: true
  dir: false
  link: false
}

А вот что мой веб-сервер видит, когда я пишу из python-запросов:

"apiKey" => "ABCD"
"file" => UploadedFile {#323 ▼
  -test: false
  -originalName: "bear.gif"
  -mimeType: "application/octet-stream"
  -size: 0
  -error: 1
  #hashName: null
  path: ""
  filename: ""
  basename: ""
  pathname: ""
  extension: ""
  realPath: "/var/www/html/myurl"
  aTime: 1970-01-01 00:00:00
  mTime: 1970-01-01 00:00:00
  cTime: 1970-01-01 00:00:00
  inode: false
  size: false
  perms: 00
  owner: false
  group: false
  type: false
  writable: false
  readable: false
  executable: false
  file: false
  dir: false
  link: false
}

Что я делаю не так?

1 Ответ

0 голосов
/ 01 июня 2018

После долгих проб и ошибок я обнаружил, что это на самом деле из-за слишком низкого значения upload_max_filesize веб-сервера PHP.

Я предполагаю, что файл был усечен, поэтому он больше не действителенGIF.Однако я не собираюсь исследовать настоящую причину, поскольку она больше не является проблемой.

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