В настоящее время я использую 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"
-d будет недостаточно - я хочу добавить имя файла.




Как насчет этого ответа? Есть несколько решений для вашей ситуации, поэтому, пожалуйста, считайте это одним из них.
Когда ваш скрипт 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 выглядит следующим образом.
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.Если это не тот результат, который вы хотите, я извиняюсь.
@camelBack Спасибо за ответ. Я прошу прощения за неудобства. О it does not succeed, могу я спросить вас о подробной информации, и вы можете еще раз подтвердить свой скрипт Python? Потому что мой образец curl — это то же самое тело запроса с вашим скриптом Python. Я хотел бы подтвердить вашу ситуацию и изменить ее.
спасибо за ваше время :) Я попытался использовать завиток, который вы разместили, использовал мои реальные данные, но это не удалось