php中模拟file上传,PHP模拟浏览器上传(数据流形式上传)文件

这篇博客记录了如何在PHP中使用CURL以文件流方式上传文件的代码实现。通过设置`Content-Type`和`Content-Disposition`,将文件内容作为POST数据的一部分进行发送。同时,该代码片段展示了如何处理其他表单数据并构造多部分/form-data请求。
摘要由CSDN通过智能技术生成

2104.html

记录

上传文件的时候,发现new \CURLFile(realpath($file)); 这种形式不可以.原来他是以文件流形式上传

记录一下代码,以后用到好找:

//网址 参数 文件

function upload($url, $p, $file) {

$param = [

//此处根据实际文件的上传的 name 填写

'fileData' => file_get_contents(realpath($file)),

];

if (!empty($p)) {

arrary_merge($p, $param);

}

$delimiter = uniqid();

$data = '';

$eol = "\r\n";

$upload = $param['fileData'];

unset($param['fileData']);

foreach ($param as $name => $content) {

$data .= "--" . $delimiter . "\r\n"

. 'Content-Disposition: form-data; name="' . $name . "\"\r\n\r\n"

. $content . "\r\n";

}

// 拼接文件流 name="fileData"; filename="1.png"' 根据实际的文件 name 和名字填写 或写个变量

//'Content-Type: image/gif'可改为'Content-Type:application/octet-stream' 由于我是测试的网站必须为 gif 所以就这样吧先

$data .= "--" . $delimiter . $eol

. 'Content-Disposition: form-data; name="fileData"; filename="1.png"' . "\r\n"

. 'Content-Type: image/gif' . "\r\n\r\n";

$data .= $upload . "\r\n";

$data .= "--" . $delimiter . "--\r\n";

$post_data = $data;

$curl = curl_init($url);

curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

curl_setopt($curl, CURLOPT_POST, true);

curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($curl, CURLOPT_HTTPHEADER, [

"Content-Type: multipart/form-data; boundary=" . $delimiter,

"Content-Length: " . strlen($post_data),

]);

$response = curl_exec($curl);

curl_close($curl);

return $response;

}

大概就是这个意思. 有几处需要根据实际环境来操作.我这里就是记录一下思路而已.

~谢谢打赏~

c6d2925bbe17d2dbf6ec9e744fd33b57.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值