$ak, 'secret' => $sk, 'endpoint' => $endpoint, 'socket_timeout' => 30, 'connect_timeout' => 10, 'signature' => $signature ]); /* * Create bucket */ printf("Create a new bucket for demo\n\n"); $obsClient -> createBucket(['Bucket' => $bucketName]); /* * Create sample file */ $sampleFilePath = '/temp/text.txt'; createSampleFile($sampleFilePath); /* * Claim a post object request */ $formParams = []; if (strcasecmp($signature, 'obs') === 0) { $formParams['x-obs-acl'] = ObsClient::AclPublicRead; } else { $formParams['acl'] = ObsClient::AclPublicRead; } $formParams['content-type'] = 'text/plain'; $res = $obsClient -> createPostSignature(['Bucket' => $bucketName, 'Key' => $objectKey, 'Expires' => 3600, 'FormParams' => $formParams]); $formParams['key'] = $objectKey; $formParams['policy'] = $res['Policy']; if (strcasecmp($signature, 'obs') === 0) { $formParams['Accesskeyid'] = $ak; } else { $formParams['AWSAccesskeyid'] = $ak; } $formParams['signature'] = $res['Signature']; printf("Creating object in browser-based post way\n\n"); $boundary = '9431149156168'; $buffers = []; $contentLength = 0; /* * Construct form data */ $buffer = []; $first = true; foreach ($formParams as $key => $val){ if(!$first){ $buffer[] = "\r\n"; }else{ $first = false; } $buffer[] = "--"; $buffer[] = $boundary; $buffer[] = "\r\n"; $buffer[] = "Content-Disposition: form-data; name=\""; $buffer[] = strval($key); $buffer[] = "\"\r\n\r\n"; $buffer[] = strval($val); } $buffer = implode('', $buffer); $contentLength += strlen($buffer); $buffers[] = $buffer; /* * Construct file description */ $buffer = []; $buffer[] = "\r\n"; $buffer[] = "--"; $buffer[] = $boundary; $buffer[] = "\r\n"; $buffer[] = "Content-Disposition: form-data; name=\"file\"; filename=\""; $buffer[] = "myfile"; $buffer[] = "\"\r\n"; $buffer[] = "Content-Type: text/plain"; $buffer[] = "\r\n\r\n"; $buffer = implode('', $buffer); $contentLength += strlen($buffer); $buffers[] = $buffer; /* * Construct file data */ $buffer = []; $fp = fopen($sampleFilePath, 'r'); if($fp){ while(!feof($fp)){ $buffer[] = fgetc($fp); } fclose($fp); } $buffer = implode('', $buffer); $contentLength += strlen($buffer); $buffers[] = $buffer; /* * Contruct end data */ $buffer = []; $buffer[] = "\r\n--"; $buffer[] = $boundary; $buffer[] = "--\r\n"; $buffer = implode('', $buffer); $contentLength += strlen($buffer); $buffers[] = $buffer; $httpClient = new Client(['verify' => false]); $host = parse_url($endpoint)['host']; $host = $bucketName . '.' . $host; $url = 'https://' . $host . ':443'; $headers = ['Content-Length' => strval($contentLength), 'Content-Type' => 'multipart/form-data; boundary=' . $boundary]; try{ $response = $httpClient -> request('POST', $url, ['body' => implode('', $buffers), 'headers'=> $headers]); printf('Post object successfully!'); $response -> getBody()-> close(); }catch (ClientException $ex){ printf('Exception message:%s', $ex ->getMessage()); } if(file_exists($sampleFilePath)){ unlink($sampleFilePath); } function createSampleFile($filePath) { if(file_exists($filePath)){ return; } $filePath = iconv('UTF-8', 'GBK', $filePath); if(is_string($filePath) && $filePath !== '') { $fp = null; $dir = dirname($filePath); try{ if(!is_dir($dir)) { mkdir($dir,0755,true); } if(($fp = fopen($filePath, 'w+'))) { fwrite($fp, uniqid() . "\n"); fwrite($fp, uniqid() . "\n"); } }finally{ if($fp){ fclose($fp); } } } }