一般上传文件使用表单提交,这只适合用户提交的文件。有些需要后台上传文件没办法使用。
可以使用curl上传文件,不需要用户提交表单。
PHP5.6之前实现
Example #2 上传文件<?php/* http://localhost/upload.php:print_r($_POST);print_r($_FILES);*/$ch =curl_init();$data = array('name'=>'Foo','file'=>'@/home/user/test.png');curl_setopt($ch,CURLOPT_URL,'http://localhost/upload.php');curl_setopt($ch,CURLOPT_POST,1);curl_setopt($ch,CURLOPT_POSTFIELDS,$data);curl_exec($ch);?>
以上例程会输出:Array([name] => Foo)Array([file] => Array([name] => test.png[type] => image/png[tmp_name] => /tmp/phpcpjNeQ[error] => 0[size] => 279))
cURL 上传文件在文件名(不能有中文)前加个@符号,然后用$_FILES接收文件。
5.5.0及以后的实现,
<?php$data = array('name'=>'Foo','file'=>'');$ch = curl_init(); $data['file']=new CURLFile(realpath(getcwd().'/test.png'));curl_setopt($ch, CURLOPT_URL, "http://localhost/upload.php");curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60); curl_setopt($ch, CURLOPT_POSTFIELDS , $data);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); echo $output;curl_close($ch);