使用curl在内存csv文件中上传

时间:2019-03-24 00:53:54

标签: csv curl post

我目前正在使用Python对所需的网址执行POST并上传内存中的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 :(得分:0)

这个答案怎么样?针对您的情况有几种解决方案,因此请考虑其中一种。

运行python脚本时,"form_field_name": "some,fake,single,row,csv\r\n"的发送形式为filesfile_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

如果这不是您想要的结果,我表示歉意。