惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

雷峰网
雷峰网
博客园 - 聂微东
酷 壳 – CoolShell
酷 壳 – CoolShell
宝玉的分享
宝玉的分享
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
T
Tailwind CSS Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
IT之家
IT之家
博客园_首页
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
量子位
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
美团技术团队
小众软件
小众软件
Jina AI
Jina AI
S
SegmentFault 最新的问题
博客园 - Franky
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com

韩小韩博客

你还在用真实邮箱注册网站?等等,你真的想清楚了吗? IPFS星际文件系统 最新二合一收款码 - 物理合并版 从Hexo到Astro博客1分钟迁移指南 Astro 添加 Waline 评论组件 腾讯云 EdgeOne Pages 实测对比:能否成为国内开发者的 Cloudflare Pages 最佳平替? Astro 中使用 Lenis 增加鼠标滚动阻尼感 一组手机和电脑动态壁纸分享【分享】 Astro 添加 Twikoo 评论组件 Astro主题-优雅的vhAstro-Theme【使用文档】 Fetch的GET、POST简单HTTP请求封装 一些实拍的手机壁纸 大理And威海【图】 很喜欢西湖的水【转自:狮子狮子鱼】 Tarot-塔罗牌占卜 Web Watermark 图片添加水印在线小助手 HanAnalytics访问分析Web统计托管于(Cloudflare Pages) 基于AI的微博动态心情分析 阿里云免费用9年ecs教程【适合轻量化服务如frp】 Cloudflare优选IP➕DnsPod的DDNS自动切换 混沌神器Clash全家桶 卷王都在用的变态休息法 NodeJs文本相似度去重脚本 骤雨重山无限存储图床托管于(Cloudflare Pages) 分享好看的天空和云(长期更新) Typecho转到Hexo(主题由Typecho-Joe-Theme转Butterfly主题) Typecho评论导出为Hexo的Valine、Twikoo等评论所支持的JSON文件 Safari浏览器内容被地址栏、菜单栏或工具栏遮挡导致的兼容问题 拼夕夕快速提现100元攻略 2024 平安喜乐
PHP模拟浏览器上传文件(数据流形式上传)
.𝙃𝙖𝙣 · 2026-04-11 · via 韩小韩博客

avatar

.𝙃𝙖𝙣

一点 0分钟

Code

用 PHP 上传文件基本都是临时存储,之后上传,怎么用 PHP 模拟浏览器以数据流形式上传文件

思路及代码如下:

//网址 参数 文件
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;
}

请根据实际情况进行实际调用

PHP GET POST 上传文件 数据流