使用cURL上传文件时出现0字节文件问题求助
cURL 文件上传问题排查与正确用法
核心问题分析
你当前用--data-raw手动构造multipart/form-data请求体的方式存在本质错误:
--data-raw只会将你编写的字符串原封不动发送给服务器,不会解析@/full/path/foo.csv去读取本地文件内容,导致服务器收到的文件部分为空,最终生成0字节文件。- 手动构造的请求体还存在语法错误:比如
forma-data是拼写错误(应为form-data),边界格式、参数换行也不符合标准multipart协议要求。
正确的cURL文件上传写法
cURL专门提供了-F(或--form)参数处理multipart/form-data类型请求,它会自动处理边界、请求头,并正确读取本地文件内容。针对你的三个参数,正确命令如下:
curl -X POST \ -F "App=location/in/the/server/" \ -F "file=@/full/local/path/foo.csv;type=text/csv" \ -F "directory=/upload/location/" \ 你的服务器上传URL
参数说明
-F "App=location/in/the/server/":直接用key=value格式传递App参数-F "file=@/full/local/path/foo.csv;type=text/csv":@符号告诉cURL读取后续路径的本地文件作为字段内容;type=text/csv指定文件的Content-Type,匹配你的需求- 若文件在脚本运行目录下,可直接写
@foo.csv
-F "directory=/upload/location/":传递directory参数
常见错误排查
- 文件路径验证:确保
@后的路径正确,本地文件存在且有读取权限,可通过ls /full/local/path/foo.csv验证路径有效性。 - 请求方法适配:若服务器要求PUT方法,添加
-X PUT即可。 - 额外请求头补充:若服务器需要特定请求头(如Authorization),可通过
-H "Authorization: Bearer xxx"添加。
内容的提问来源于stack exchange,提问作者Sidharth Bhatt
相关产品推荐
相关产品推荐

