Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用curl上传文件。Php_Php_File Upload_Curl_File Type - Fatal编程技术网

使用curl上传文件。Php

使用curl上传文件。Php,php,file-upload,curl,file-type,Php,File Upload,Curl,File Type,我在我的项目中使用curl。libcurl的版本是7.18.2。这是一个无法工作的bug文件类型,更多-。对于文件上载,我使用以下代码: if ( !empty($_POST) ){ $post = $_POST; } if ( !empty($_FILES) ){ foreach ($_FILES as $param => $file) { if ( $file['tmp_name'] ) $files[$param]

我在我的项目中使用curl。libcurl的版本是7.18.2。这是一个无法工作的bug文件类型,更多-。对于文件上载,我使用以下代码:

if ( !empty($_POST) ){
     $post = $_POST;
 }

if ( !empty($_FILES) ){
   foreach ($_FILES as $param => $file) {
         if ( $file['tmp_name'] )
                $files[$param] = '@' . $file['tmp_name'] . ';filename=' . $file['name'] . ';type=' . $file['type'];
   }
}

$post = !empty($files) ? array_merge($post, $files) : $post;

// ...

if ( $curl = curl_init() ) {

  curl_setopt($curl, CURLOPT_URL, $link);
  curl_setopt($curl, CURLOPT_USERAGENT, $browser);
  curl_setopt($curl, CURLOPT_REFERER, $reffer);
  curl_setopt($curl, CURLOPT_POST, true);
  curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
  curl_setopt($curl, CURLOPT_COOKIE, $cookie);

  if ( !empty($post) ) {
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post);
  }

  $content = curl_exec($curl);

  curl_close ($curl);
}
请告诉我,如何在服务器上发送文件类型?无法升级libcurl。
非常感谢。

谢谢。我想了想。本期:

卷曲部分:

服务器部件:


你不能用另一个post字段作为文件类型吗?你是什么意思$_POST['file_type']?是的,您可以通过不带类型的curl发送文件,并在另一个POST字段中发送类型。然后将服务器上的脚本更改为从$\u文件中获取文件,并从$\u POST中键入。
if ( !empty($_FILES) ){

        foreach ($_FILES as $param => $file) {

            if ( $file['tmp_name'] ){

                $post[$param]='@' . $file['tmp_name'];
                $post['_ftype']=$file['type'];
                $post['_ffilename']=$file['name'];
                $post['_ffileuploadname']=$param;
            }
        }
}
if ( !empty($_FILES) && isset($_POST['_ffileuploadname']) ){

    $name=$_POST['_ffileuploadname'];
    $_FILES[$name]['type']=$_POST['_ftype'];
    $_FILES[$name]['name']=$_POST['_ffilename'];
}