如果大小 > 2 GB,Curl 无法发布文件

san*_*ndy 4 bash shell curl amazon-ec2

我正在尝试发布大小> 2 Gb 的文件,但curl 命令失败并出现内存不足错误。

curl:option --data-urlencode: out of memory
Run Code Online (Sandbox Code Playgroud)

我正在使用的curl命令:

curl -X POST -k --header 'content-type: application/x-www-form-urlencoded' \
    --header accept: text/csv --data-urlencode 'form_id=' 12 \
    --data-urlencode 'list_id=' 25 --data-urlencode 'file_name@' list.csv \
    https://example.com
Run Code Online (Sandbox Code Playgroud)

Dan*_*erg 12

--data-urlencode会将 2GB 数据加载到内存缓冲区中,然后将其 URL 编码到新的内存缓冲区中进行编码,这意味着此操作需要 >4GB 内存。

未来对curl的增强可能是(让它检测到巨大的尺寸)切换到流式方法。

解决方法是“手动”渲染 URL 编码文件(包含要发送到服务器的完整内容),然后使用-X POST -T file该文件。