Как установить заголовок Content-disposition в качестве вложения для части файла?Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Как установить заголовок Content-disposition в качестве вложения для части файла?

Сообщение Anonymous »

Я использую модуль запросов Python для отправки HTTP-запроса POST, состоящего из нескольких частей, который содержит как данные формы, так и вложенный файл.

Заголовок «Content-disposition» для каждого объекта, состоящего из нескольких частей, имеет значение «form-data», включая файловую часть.

Мне нужен заголовок «Content-disposition» для частей данных формы, чтобы по-прежнему было указано «form-data», но заголовок «Content-disposition» для файла в части должно быть указано «attachment», а не «form-data».

Как изменить заголовок содержимого-диспозиции только для файловой части?
Мой код:

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

#Python 3.7.3 (default, Apr 24 2019, 13:20:13) [MSC v.1915 32 bit (Intel)]
import requests

#USER PARAMETERS
user_name = 'user_account'
password = 'user_password'
token = '45Hf4xGhj'

#REQUESTS PARAMETERS
url = '192.168.0.2'
headers = {'content-type': 'multi-part/form-data'}
data = {'Username':user_name, 'Password':password, 'Token':token}
files = {'settings': ('settings.xml', open('settings.xml', 'rb'), 'app/xml')}

#POST
response = requests.post(url, headers=headers, data=data, files=files)
Вот как выглядит заголовок части файла при запросах Python:

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

Content-Type: app/xml
Content-Disposition: form-data; name="settings"; filename="settings.xml"
и вот как мне нужен заголовок файловой части:

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

Content-Type: app/xml
Content-Disposition: attachment; name="settings"; filename="settings.xml"
Я также пытался изменить заголовок, добавив в файл параметр заголовка:

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

files = {'settings': ('settings.xml', open('settings.xml', 'rb'),
'app/xml', {'Content-Disposition':'attachment'})}
но это не имело никакого эффекта. Я могу указать любой другой пользовательский заголовок, и он добавит его, но заголовок «Content-Disposition» не изменится, если я использую этот подход.

Есть идеи?



Использование пояса инструментов:

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

m = MultipartEncoder( fields={'Username': user_name,
'Password': password,
'Token': token,
'settings': ('settings', open('settings.xml', 'rb'),
'app/xml',
{'Content-Disposition':'attachment'}
)
}
)

r = requests.post('http://httpbin.org/post',
data=m,
headers={'Content-Type': m.content_type})

результат

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

...--2ba9624051854b6d961bad262a1792fc
Content-Disposition: form-data; name="settings"; filename="settings"
Content-Type: app/xml
...


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Загрузка файла не имеет расширения файла с использованием Content-Disposition
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Символы UTF-8 в «имени файла» для «Content-Disposition» дают «IllegalArgumentException: Unexpected char»
    Anonymous » » в форуме JAVA
    0 Ответы
    28 Просмотры
    Последнее сообщение Anonymous
  • Имя файла Content-Disposition на китайском языке не поддерживается.
    Anonymous » » в форуме JAVA
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Имя файла Content-Disposition на китайском языке не поддерживается.
    Anonymous » » в форуме JAVA
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Java Apache установил дополнительные параметры в «Content-Disposition:»
    Anonymous » » в форуме JAVA
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

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