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/18986.html

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

相关推荐

发表回复

登录后才能评论