curl POST多文件上传问题求助:仅首个文件成功上传
curl多文件上传问题分析与解决
你的两个命令问题点:
第一条命令:
- 用了
file和file1两个不同的字段名,如果服务器端只监听file字段接收文件,就只会处理第一个file对应的文件,忽略file1。 - 重复传递
desc字段属于冗余操作,服务器通常只会保留其中一个值,没必要重复传。
- 用了
第二条命令:
--form "files=@dummy2.properties,dummy3.properties"这种写法错误,curl不支持在单个--form参数里用逗号分隔多个文件路径,这样只会被识别为一个无效的文件名,或者仅读取第一个文件。
正确的多文件上传命令:
方式1:重复使用同一个文件字段名(适配大多数服务器)
如果单文件上传时用的是file字段,多文件上传只需重复--form "file=@文件路径"即可:
curl --user xxxx:xxxx --request POST 'https://example.com/xxxx/xxxx?cmd=upload' \ --form "file=@dummy2.properties" \ --form "file=@dummy3.properties" \ --form "desc=myfiles"
方式2:使用数组格式字段名(部分服务器要求)
如果服务器端期望接收数组形式的文件字段(比如files[]),可以这样写:
curl --user xxxx:xxxx --request POST 'https://example.com/xxxx/xxxx?cmd=upload' \ --form "files[]=@dummy2.properties" \ --form "files[]=@dummy3.properties" \ --form "desc=myfiles"
注意事项
需要确认服务器端接收多文件的目标字段名:如果单文件上传用的是file,就用方式1;如果服务器文档说明要用files数组,就用方式2。
内容的提问来源于stack exchange,提问作者ivcho_pifcho
相关产品推荐
相关产品推荐

