分享编程~
 

HTML PHP文件上传(五) AJAX异步上传文件Blob二进制数据流远程上传

AJAX异步上传Blob二进制数据流文件进行远程上传

天天特卖抢好货

AJAX异步上传Blob二进制数据流文件进行远程上传。

原理:通过FileReader获得文件信息,然后在页面上展示选择的文件,(可以通过canvas画图压缩图片),获得base64数据转成Blob二进制数据流,实例化FormData 创建form表单,然后进行ajax异步上传,后端接收图片进行上传,获得图片路径进行远程上传。

以php为例:

<?php
header("Content-type: text/html; charset=utf-8");
function curl_file($url, $filePath, $fileType){
	// PHP版本大于等于5.5的
	if(version_compare(phpversion(),'5.5.0') >= 0 && class_exists('CURLFile')){
		$fields['file'] = new CURLFile($filePath);
		$fields['file']->setMimeType($fileType);
		// 上边两行也可以这样写:
		// $fields['file'] = new CURLFile($filePath,$fileType);
	}else{ // PHP 版本小于5.5的
		$fields['file'] = '@'.$filePath;//加@符号curl就会把它当成是文件上传处理
	}
	$ch = curl_init();
	curl_setopt($ch, CURLOPT_URL,$url);
	curl_setopt($ch, CURLOPT_POST,true);
	curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 1); //连接超时
	curl_setopt($ch, CURLOPT_POSTFIELDS,$fields);
	$data=curl_exec ($ch);
	//$info=curl_getinfo($ch);
	curl_close($ch);
	return $data;
}


// 调用示例:
$url = 'http://172.16.4.81:8080/test/temp/outupload.php'; // 远程请求连接
$filePath = realpath('./filetest/1.jpg'); // 获得文件绝对路径,如: E:/filetest/1.jpg
$fileType = 'image/jpeg'; // 文件类型

$result = curl_file($url,$filePath,$fileType);
print_r($result);

?>


注意 $filePath 参数必须是绝对路径。

远程端文件接收方法请查看下一篇或者上几篇文章。

上一篇:HTML PHP文件上传(四) AJAX异步上传文件二进制数据流下一篇:js 图片上传通过canvas画图实现图片压缩
赞(5) 踩(0)
您说多少就多少,您的支持是我最大的动力
赏金
微 信
赏金
支付宝
本文连接: https://www.yj521.com/article/36.html
版权声明: 本文为原创文章,版权归《越加网》所有,分享转载请注明出处!