curl
使用's选项上传文件时--upload-file
,如何指定与磁盘上的文件名不同的文件名?使用该-F
选项,我认为可以这样做:curl -F 'file=@/path/to/file/badname;filename=goodname'
,但我不确定如何使用--upload-file
(also -T
) 进行等效操作。我正在使用一个 API,它要求上传的文件具有特定的文件名,但我不想将文件复制到磁盘上,这样我就可以正确上传它。
答案1
尝试这个:
卷曲网址>/好名字- 上传文件错误的文件名
例子:
curl http://example.com/goodname.html --upload-file badfilename.html
我尝试了这个并成功上传了一个名为goodname.html
:)的文件
答案2
curl -v --user '用户名:密码' --upload-file {path}/{binaire} {your_url}/{binaire}
答案3
当您使用 POST 方法和 --form (-F) 选项上传文件时,curl 使用 multipart/form-data 内容类型:
POST /test.html HTTP/1.1
Host: example.org
Content-Type: multipart/form-data;boundary="boundary"
--boundary
Content-Disposition: form-data; name="field1"
value1
--boundary
Content-Disposition: form-data; name="field2"; filename="example.txt"
value2
--boundary--
如您所见,有一个用于文件名的地方。但是当你使用--upload-file(-T)时,curl将使用PUT方法,并且不会有这样的地方,因为请求的主体将仅包含唯一的文件主体:
PUT /test.html HTTP/1.1
Host: example.org
file content
这里唯一的文件名是 URL 本身:test.html
答案4
--url
像这样使用curl的选项:
curl --upload-file /path/to/file/badname --url http://serverip/remotedir/goodname