PHP CURL 上传二进制流图片

前言

项目中模块数据由PHP爬虫进行更新,当检测到有新图片时需要上传到跨地区的CDN回源服务器(静态资源服务器),服务器负责人只提供一个上传API

解决方法

1.将图片保存到本地再使用PHP CURL + new \CURLFile($path)上传(缺点: IO操作)

2.模拟拼接请求数据报文,将图片以二进制文件直接发送给上传API

composer require ar414/curl-upload-binary-image
<?phprequire_once '../vendor/autoload.php';use Ar414\UploadBinaryImage;$url = 'http://0.4.1.4:414/upload?path=/test/';$fields = [];$fieldName = 'file';$fileName = 'ar414.png';$fileBody = file_get_contents('https://github.com/ar414-com/ar414-com/raw/master/assets/ar414.png');$ret = UploadBinaryImage::upload($url,$fields,$fieldName,$fileName,$fileBody);var_dump($ret);

解决思路

1.重温HTTP知识

2.通过postmanGoogle Chrome 上传文件 查看发送的请求数据

3.拼接请求体

  • set Header multipart/form-data; boundary={md5(microtime())}
  • set Body Block Content-Type: application/octet-stream

更多相关文章

  1. web安全之文件上传漏洞攻击与防范方法
  2. 用PHP实现高并发服务器
  3. PHP之内置web服务器
  4. php+WebUploader图片批量上传
  5. php结合layui前端实现多图上传

随机推荐

  1. android:radius设置圆角失败的问题
  2. Android进阶——Android视图工作机制之me
  3. Android 模拟器安装及使用教程
  4. Android软件的自动更新
  5. 欢迎进入Android的世界
  6. Android之我当年爬过的坑
  7. Android修改APP版本号
  8. Android(安卓)UI 之 我的页面 圆形图片+
  9. android最佳实践(五)
  10. Android单行显示ellipse和singleLine