используйте curl для загрузки в память файла csv - PullRequest
0 голосов
/ 24 марта 2019

В настоящее время я использую Python для выполнения POST по желаемому URL и загрузки в CSV-файл в памяти:

Код Python:

csv_content = 'some,fake,single,row,csv\r\n'
requests.post(
    'http://some.location.com',
    files={'form_field_name': ('file_name.csv', csv_content, 'text/csv')},
    # implicit "multipart/form-data" content-type header
)

Код Python работает хорошо, но я действительно хочу использовать curl для выполнения действия.

То, что у меня есть: (Я знаю, что это много не хватает, я пробовал варианты

curl -X POST http://some.location.com -H "Content-Type: text/csv"
  1. Я не уверен, что заголовок хорош
  2. Не уверен, как указать данные, так как -d будет недостаточно - я также хочу добавить имя файла

1 Ответ

0 голосов
/ 25 марта 2019

Как насчет этого ответа? Есть несколько решений для вашей ситуации, поэтому, пожалуйста, подумайте об этом как об одном.

Когда ваш скрипт на Python запущен, "form_field_name": "some,fake,single,row,csv\r\n" отправляется как files. file_name.csv используется в качестве имени файла. В этом случае тело запроса выглядит следующим образом.

Тело запроса:

--boundaryboundary
Content-Disposition: form-data; name="form_field_name"; filename="file_name.csv"
Content-Type: text/csv

some,fake,single,row,csv

--boundaryboundary--

Пример скручивания:

Когда используется вышеуказанное тело запроса, пример скручивания выглядит следующим образом.

curl -H "Content-Type: multipart/form-data; boundary=boundaryboundary" \
  -d $'--boundaryboundary\r\nContent-Disposition: form-data; name="form_field_name"; filename="file_name.csv"\r\nContent-Type: text/csv\r\n\r\nsome,fake,single,row,csv\r\n\r\n--boundaryboundary--' \
  "http://some.location.com"
  • Content-Type заголовка использует multipart/form-data; boundary=boundaryboundary.
  • Тело запроса используется напрямую.
  • Имя файла дается как file_name.csv.
  • Каждый разрыв строки заменен на \r\n.

Если это не тот результат, который вы хотите, я прошу прощения.

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