zoukankan      html  css  js  c++  java
  • 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 = "
    ";
            $upload = $param['upload'];
            unset($param['upload']);
     
            foreach ($param as $name => $content) {
                $data .= "--" . static::$delimiter . "
    "
                    . 'Content-Disposition: form-data; name="' . $name . ""
    
    "
                    . $content . "
    ";
            }
            // 拼接文件流
            $data .= "--" . static::$delimiter . $eol
                . 'Content-Disposition: form-data; name="file"; filename="' . $param['filename'] . '"' . "
    "
                . 'Content-Type:application/octet-stream'."
    
    ";
     
            $data .= $upload . "
    ";
            $data .= "--" . static::$delimiter . "--
    ";
            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();

    这个代码是拼接的

  • 相关阅读:
    阿里巴巴电商搜索推荐实时数仓演进之路
    阿里云发布边缘计算视频上云解决方案 为海量视图处理提供城市级云基础设施
    MySQL设置所有IP地址都可以访问数据库
    HTML5中的data-*属性和jQuery中的.data()方法使用
    21. 合并两个有序链表 *****
    链表相交
    链表的中间节点
    剑指 Offer 24. 反转链表 *****
    从尾到头打印链表
    返回倒数第k个节点
  • 原文地址:https://www.cnblogs.com/newmiracle/p/14256031.html
Copyright © 2011-2022 走看看