douwen3198
douwen3198
2016-02-11 11:56

Curl无法在服务器上上传文件

已采纳

I am trying to upload a file on sever using Api.And it is successful on localhost it is working fine i can easily upload the file on server. But when my code goes on server then it is not getting uploaded.I Give the read write permission to the folder from where i am fetching the images or files. this is my curl code:

 $c = curl_init();
        curl_setopt($c, CURLOPT_URL, $url);
        curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
        if($api_type == 2){
            //$mm = array("message" => $message);

            $message = str_replace("
", "\
", $message);
            $message = '{"message":"'.$message.'"}';

            curl_setopt($c, CURLOPT_HTTPHEADER, array(
             'Content-Type: application/json',
            ));
            curl_setopt($c, CURLOPT_POST, 1);
            curl_setopt($c, CURLOPT_POSTFIELDS,$message);
        }
        if($api_type == 3 & $attachment != NULL){
            $data = array( 'file' => '@'.self::basePath().'/../user_uploads/hipchat_image/'.$attachment);
            curl_setopt($c, CURLOPT_HTTPHEADER, array(
            'Content-Type: multipart/related',
            ));
            curl_setopt($c, CURLOPT_POST, 1);
            curl_setopt($c, CURLOPT_POSTFIELDS,$data);
        }
        return curl_exec($c); 
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • dtlh12053 dtlh12053 5年前

    You could try...

    curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
    

    Depending on PHP version, this is defaulted to false in php 5.5 and true in 5.6+ ... so check local and webserver version of PHP.

    See: http://php.net/manual/en/function.curl-setopt.php

    点赞 评论 复制链接分享
  • dsqve08622 dsqve08622 4年前

    PHP 7 removes this optioncurl_setopt($ch, CURLOPT_SAFE_UPLOAD, false); the CURLFile interface must be used to upload files.

    You can write code like this

    $data = array('file'=>new CURLFile('/file/path'));
    

    See http://php.net/manual/en/function.curl-setopt.php

    点赞 评论 复制链接分享