首页  编辑  

Curl 上传文件的方法

Tags: /计算机文档/Linux & Unix/   Date Created:
用curl下载网页估计大家都会,但是模拟 multipart/form-data 形式的 form 上传文件则稍稍复杂些。命令行如下。
curl -F "action=upload" -F "filename=@file.tar.gz" http://localhost/action.php
如果使用了-F参数,curl就会以 multipart/form-data 的方式发送POST请求。-F参数以name=value的方式来指定参数内容,如果值是一个文件,则需要以name=@file的方式来指定。
如果通过代理,上面的命令有可能会被代理拒绝,这时需要指定上传文件的MIME类型。
curl -x myproxy.com:1080 -F "action=upload" -F "filename=@file.tar.gz;type=application/octet-stream" http://localhost/action.php
另外,如果不上传文件,则可以使用 -d 参数,这时curl会以 application/x-www-url-encoded 方式发送 POST 请求。
curl -d "action=del" -d "id=12" http://localhost/action.php
下面是Windows下的批处理文件cu.bat,需要cygwin的curl支持:
@echo off

set others=
set url=%1
set file=%~2

if "%file%" == "" (
  echo usage:
  echo    %~n0 [serverurl] [filename] [Other curl parameters...]
  goto end
)

REM SKIP first 
shift
shift

REM 求扣除前面两个参数外的剩余参数,以便发送给curl处理
:loop1
if "%~1"=="" goto loopend
set others=%others% %1
shift
goto loop1
:loopend

curl --ssl-no-revoke -A "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36" -b "XDEBUG_SESSION=netbeans-xdebug" -F "file=@%file%" %url% %others%

:end