Многоэтапная загрузка файла Python с постером - задайте имя отправляемого файла - PullRequest
0 голосов
/ 28 октября 2019

Я пытаюсь загрузить файл, используя следующий код (который был обобщен).

На стороне сервера, когда я проверяю имя полученного файла, я вижу, что он установлен в file_pathпараметр.

В настоящее время библиотека плакатов принимает введенный мной параметр file_path (например, file_path = ~ / user / data.csv) и отправляет его в качестве имени файла во время многоэтапной загрузки файла.

Я ищу способ изменить имя отправляемого файла (поскольку сервер ожидает имя файла без / char)

Заранее спасибо.

PS У меня естьуже пытался добавить ключ "name" к значениям, но это не помогло.

values = {'file': open(file_path, 'rb')}

poster.streaminghttp.register_openers()

datagen, headers = poster.encode.multipart_encode(values)

# Create the Request object
request = urllib2.Request(address, datagen, headers)

1 Ответ

0 голосов
/ 29 октября 2019

Мне удалось решить эту проблему, используя следующий код:

    f = open(file_path, constants.READ_FILE_BINARY_MODE)
    mp = MultipartParam("file", fileobj=f, filename="file.csv")

    values = {"file": mp,
              constants.AUTHORIZATION_HEADER_KEY: constants.AUTHORIZATION_HEADER_VALUE % self.__token,
              constants.CACHE_CONTROL_HEADER_KEY: constants.CACHE_CONTROL_NEGATIVE_VALUE
              }

    poster.streaminghttp.register_openers()

    datagen, headers = poster.encode.multipart_encode(values)

    # Create the Request object
    request = urllib2.Request(address, datagen, headers)
...