php curl form-data上传file方法详解编程语言

php curl form-data上传file方法

<?php 
 
 
class UploadPart 
{    
    protected static $url; 
    protected static $delimiter; 
    protected static $instance; 
  
    public function __construct() { 
        static::$url = 'http://xx/yasuotupian.php'; 
        static::$delimiter = uniqid(); 
    } 
  
    public function putPart($param) { 
        $post_data = static::buildData($param); 
        $curl = curl_init(static::$url); 
        curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
        curl_setopt($curl, CURLOPT_POST, true); 
        curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data); 
        curl_setopt($curl, CURLOPT_HTTPHEADER, [ 
            "Content-Type: multipart/form-data; boundary=" . static::$delimiter, 
            "Content-Length: " . strlen($post_data) 
        ]); 
        $response = curl_exec($curl); 
        curl_close($curl); 
  
        return $response; 
    } 
  
    private static function buildData($param){ 
        $data = ''; 
        $eol = "/r/n"; 
        $upload = $param['upload']; 
        unset($param['upload']); 
  
        foreach ($param as $name => $content) { 
            $data .= "--" . static::$delimiter . "/r/n" 
                . 'Content-Disposition: form-data; name="' . $name . "/"/r/n/r/n" 
                . $content . "/r/n"; 
        } 
        // 拼接文件流 
        $data .= "--" . static::$delimiter . $eol 
            . 'Content-Disposition: form-data; name="file"; filename="' . $param['filename'] . '"' . "/r/n" 
            . 'Content-Type:application/octet-stream'."/r/n/r/n"; 
  
        $data .= $upload . "/r/n"; 
        $data .= "--" . static::$delimiter . "--/r/n"; 
        return $data; 
    } 
  
    public static function getInstance() { 
        if(!static::$instance){ 
            static::$instance = new static(); 
        } 
       return static::$instance; 
    } 
  
} 
 
$fields = array( 
    'filename' => 'spineboy.png', 
    'upload'=>file_get_contents('ss/spineboy.png') 
); 
$part = UploadPart::getInstance()->putPart($fields); 
 
print_r($part); 
exit();

这个代码是拼接的

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/18986.html

(0)
上一篇 2021年7月19日 21:37
下一篇 2021年7月19日 21:37

相关推荐

发表回复

登录后才能评论