如何用curl将文件内容作为表单字段提交(非文件上传)
解决curl POST提交文件内容为表单字段值的问题
你的问题出在shell对$(cat TEST/README.txt)输出内容的处理上——shell会把文件里的换行、空格等空白字符当成参数分隔符,导致curl把原本属于description字段的内容拆成了多个未知表单字段,所以才会出现警告。
直接用curl内置的文件内容读取语法就能解决,不需要依赖shell的命令替换,具体命令如下:
curl -X POST -F "description=<TEST/README.txt" https://httpbin.org/post
这个命令里的<符号告诉curl直接读取指定文件的内容作为该表单字段的值,全程由curl处理文件内容,不会被shell拆分,能完美保留换行符和各种特殊字符,和你用静态$'description=hi\nthere...'的效果一致,但支持动态读取文件。
如果你的shell是bash,也可以用另一种方式,通过printf确保内容被完整传递,避免shell分词:
curl -X POST -F "description=$(printf '%s' "$(< TEST/README.txt)")" https://httpbin.org/post
两种方法都能解决问题,第一种更简洁高效,推荐优先使用。
内容的提问来源于stack exchange,提问作者Kaiden Prince
相关产品推荐
相关产品推荐

