Qiniu\Http\Client::multipartPost PHP Method

multipartPost() public static method

public static multipartPost ( $url, $fields, $name, $fileName, $fileBody, $mimeType = null, array $headers = [] )
$headers array
    public static function multipartPost($url, $fields, $name, $fileName, $fileBody, $mimeType = null, array $headers = array())
    {
        $data = array();
        $mimeBoundary = md5(microtime());
        foreach ($fields as $key => $val) {
            array_push($data, '--' . $mimeBoundary);
            array_push($data, "Content-Disposition: form-data; name=\"{$key}\"");
            array_push($data, '');
            array_push($data, $val);
        }
        array_push($data, '--' . $mimeBoundary);
        $mimeType = empty($mimeType) ? 'application/octet-stream' : $mimeType;
        $fileName = self::escapeQuotes($fileName);
        array_push($data, "Content-Disposition: form-data; name=\"{$name}\"; filename=\"{$fileName}\"");
        array_push($data, "Content-Type: {$mimeType}");
        array_push($data, '');
        array_push($data, $fileBody);
        array_push($data, '--' . $mimeBoundary . '--');
        array_push($data, '');
        $body = implode("\r\n", $data);
        $contentType = 'multipart/form-data; boundary=' . $mimeBoundary;
        $headers['Content-Type'] = $contentType;
        $request = new Request('POST', $url, $headers, $body);
        return self::sendRequest($request);
    }

Usage Example

Exemplo n.º 1
0
 /**
  * 上传二进制流到七牛, 内部使用
  *
  * @param $upToken    上传凭证
  * @param $key        上传文件名
  * @param $data       上传二进制流
  * @param $params     自定义变量,规格参考
  *                    http://developer.qiniu.com/docs/v6/api/overview/up/response/vars.html#xvar
  * @param $mime       上传数据的mimeType
  * @param $checkCrc   是否校验crc32
  *
  * @return array    包含已上传文件的信息,类似:
  *                                              [
  *                                                  "hash" => "<Hash string>",
  *                                                  "key" => "<Key string>"
  *                                              ]
  */
 public static function put($upToken, $key, $data, $config, $params, $mime, $checkCrc)
 {
     $fields = array('token' => $upToken);
     if ($key === null) {
         $fname = 'filename';
     } else {
         $fname = $key;
         $fields['key'] = $key;
     }
     if ($checkCrc) {
         $fields['crc32'] = \Qiniu\crc32_data($data);
     }
     if ($params) {
         foreach ($params as $k => $v) {
             $fields[$k] = $v;
         }
     }
     list($upHost, $err) = $config->zone->getUpHostByToken($upToken);
     if ($err != null) {
         return array(null, $err);
     }
     $response = Client::multipartPost($upHost, $fields, 'file', $fname, $data, $mime);
     if (!$response->ok()) {
         return array(null, new Error($upHost, $response));
     }
     return array($response->json(), null);
 }
All Usage Examples Of Qiniu\Http\Client::multipartPost