Python – HTTP-запрос POST multipart/form-dataPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Python – HTTP-запрос POST multipart/form-data

Сообщение Anonymous »

Я хотел бы загрузить файл на веб-сервер. Судя по тому, что я прочитал, лучший способ сделать это — использовать тип кодирования multipart/form-data в запросе HTTP POST.

Мои исследования показывают, что нет простого способа сделать это с помощью стандартной библиотеки Python. Я использую Python 3.

(Примечание: см. пакет под названием Requests (ссылка PyPI), чтобы легко это сделать)

В настоящее время я использую этот метод:

Код: Выделить всё

import mimetypes, http.client
boundary = 'wL36Yn8afVp8Ag7AmP8qZ0SA4n1v9T' # Randomly generated
for fileName in fileList:
# Add boundary and header
dataList.append('--' + boundary)
dataList.append('Content-Disposition: form-data; name={0}; filename={0}'.format(fileName))

fileType = mimetypes.guess_type(fileName)[0] or 'application/octet-stream'
dataList.append('Content-Type: {}'.format(fileType))
dataList.append('')

with open(fileName) as f:
# Bad for large files
dataList.append(f.read())

dataList.append('--'+boundary+'--')
dataList.append('')
contentType = 'multipart/form-data; boundary={}'.format(boundary)

body = '\r\n'.join(dataList)
headers = {'Content-type': contentType}

conn = http.client.HTTPConnection('http://...')
req = conn.request('POST', '/test/', body, headers)

print(conn.getresponse().read())
Это работает для отправки текста.

Есть две проблемы: это только текст и весь текст. файл должен храниться в памяти как гигантская строка.

Как загрузить любой двоичный файл? Есть ли способ сделать это, не считывая весь файл в память?

Подробнее здесь: https://stackoverflow.com/questions/157 ... st-request
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как проанализировать тело HTTP, отправленное с помощью метода HTTP POST «multipart/form-data»?
    Anonymous » » в форуме C#
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить файл на сервер с помощью HTTP POST multipart/form-data?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить файл на сервер с помощью HTTP POST multipart/form-data?
    Anonymous » » в форуме Php
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Как загрузить файл на сервер с помощью HTTP POST multipart/form-data?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Пустое значение http post multipart/form-data
    Anonymous » » в форуме C#
    0 Ответы
    1 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»