【问题标题】:Upload file using Curl and receive them in Laravel method使用 Curl 上传文件并在 Laravel 方法中接收它们
【发布时间】:2019-02-15 14:05:51
【问题描述】:

我一直在尝试使用 laravel 应用程序端点使用 curl 上传文件。

以下代码位于单独的服务器上。

$header = $this->getCurlHeader();
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$this->url);
curl_setopt($ch, CURLOPT_HTTPHEADER,$header);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
// curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);   
$cfile = new \CURLFile($this->filePath . $this->csvFile,  'text/csv','text.csv');
//print_r($cfile);exit;
$postData = array('csv' => $cfile);         
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);                    
curl_setopt($ch, CURLOPT_RETURNTRANSFER,true);
//curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$response = curl_exec($ch);
$hhtpCode = curl_getinfo($ch);
curl_close($ch);
//$this->dbg($hhtpCode);
$this->dbg(json_decode($response,1),1);

并在托管在不同服务器上的 laravel 应用中接收端。

public function insert(Request $request, $feed=''){
     //return response()->json(var_dump($request->all()));
     //return response()->json("here in insert");
     return response()->json($_FILES);
     echo "here";
     dd($_FILES);
}

它返回给我空的响应。 我可以使用标头验证 curl 请求。

任何建议都会有所帮助。 谢谢。

【问题讨论】:

    标签: php laravel api curl


    【解决方案1】:

    您可以在源服务器上尝试这样的操作:

    $target_url = 'https://mywebsite.com'; // Write your URL here
    $dir = '/var/www/html/storage/test.zip'; // full directory of the file
    
    $cFile = curl_file_create($dir);
    $post = array('file'=> $cFile); // Parameter to be sent
    
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $target_url);
    curl_setopt($ch, CURLOPT_POST,1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    $result=json_decode(curl_exec($ch));
    curl_close ($ch);
    

    从目标服务器,打印发送的请求。

    public function insert(Request $request){
        dd($request->file);
    }
    

    【讨论】:

    • 接收脚本怎么样
    • 接收脚本无法接收任何东西
    • @ShakirBhatt 我已经更新了目标服务器的示例
    • 谢谢。试过dd($request->file);,但它什么也没打印。不介意的话可以联系我吗?
    • 我有答案,但我无法发布,因为我已被禁止发布。
    【解决方案2】:

    请使用 curlfile 方法上传文件。

    if(isset($_FILES) && !empty($_FILES['identity_doc']))
                {
    
                        foreach($_FILES['identity_doc'] as $key => $file)
                        {
                            $data['document'.$i]= new CURLFile($_FILES['identity_doc']['tmp_name'][$i], $_FILES['identity_doc']['type'][$i],$_FILES['identity_doc']['name'][$i]);
                        }
    
                }
    

    【讨论】:

    • 谢谢,但没有来自数据。我的文件在某个路径上。
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2020-08-08
    • 2014-11-03
    • 1970-01-01
    • 2020-12-24
    • 2018-06-15
    相关资源
    最近更新 更多