美图秀秀web开放平台--PHP流式上传和表单上传示例分享


Posted in PHP onJune 22, 2014

废话少说,直接上代码:

<?php
/**
 * Note:for octet-stream upload
 * 这个是流式上传PHP文件
 * Please be amended accordingly based on the actual situation
 */
$post_input = 'php://input';
$save_path = dirname(__FILE__);
$postdata = file_get_contents($post_input);
if (isset($postdata) && strlen($postdata) > 0) {
 $filename = $save_path . '/' . uniqid() . '.jpg';
 $handle = fopen($filename, 'w+');
 fwrite($handle, $postdata);
 fclose($handle);
 if (is_file($filename)) {
  echo 'Image data save successed,file:' . $filename;
  exit ();
 } else {
  die ('Image upload error!');
 }
} else {
 die ('Image data not detected!');
}
<?php
/**
 * Note:for multipart/form-data upload
 * 这个是标准表单上传PHP文件
 * Please be amended accordingly based on the actual situation
 */
if (!$_FILES['Filedata']) {
 die ('Image data not detected!');
}
if ($_FILES['Filedata']['error'] > 0) {
 switch ($_FILES ['Filedata'] ['error']) {
  case 1 :
   $error_log = 'The file is bigger than this PHP installation allows';
   break;
  case 2 :
   $error_log = 'The file is bigger than this form allows';
   break;
  case 3 :
   $error_log = 'Only part of the file was uploaded';
   break;
  case 4 :
   $error_log = 'No file was uploaded';
   break;
  default :
   break;
 }
 die ('upload error:' . $error_log);
} else {
 $img_data = $_FILES['Filedata']['tmp_name'];
 $size = getimagesize($img_data);
 $file_type = $size['mime'];
 if (!in_array($file_type, array('image/jpg', 'image/jpeg', 'image/pjpeg', 'image/png', 'image/gif'))) {
  $error_log = 'only allow jpg,png,gif';
  die ('upload error:' . $error_log);
 }
 switch ($file_type) {
  case 'image/jpg' :
  case 'image/jpeg' :
  case 'image/pjpeg' :
   $extension = 'jpg';
   break;
  case 'image/png' :
   $extension = 'png';
   break;
  case 'image/gif' :
   $extension = 'gif';
   break;
 }
}

if (!is_file($img_data)) {
 die ('Image upload error!');
}

// 图片保存路径,默认保存在该代码所在目录(可根据实际需求修改保存路径)
$save_path = dirname(__FILE__);
$uinqid = uniqid();
$filename = $save_path . '/' . $uinqid . '.' . $extension;
$result = move_uploaded_file($img_data, $filename);
if (!$result || !is_file($filename)) {
 die ('Image upload error!');
}
echo 'Image data save successed,file:' . $filename;
exit ();

备注:美图秀秀提供两个上传接口供测试
一个是octet-stream方式上传,地址为:http://imgkaka.meitu.com/xiuxiu_web_pic_save.php
另一个是multipart/form-data方式上传,地址为:http://web.upload.meitu.com/image_upload.php
表单名称为"upload_file"。

PHP 相关文章推荐
php设计模式 State (状态模式)
Jun 26 PHP
php的urlencode()URL编码函数浅析
Aug 09 PHP
php数组函数序列之next() - 移动数组内部指针到下一个元素的位置,并返回该元素值
Oct 31 PHP
php防止站外远程提交表单的方法
Oct 20 PHP
PHP接收json 并将接收数据插入数据库的实现代码
Dec 01 PHP
PHP中new static()与new self()的比较
Aug 19 PHP
PHP实现多关键字加亮功能
Oct 21 PHP
PHP水印类,支持添加图片、文字、填充颜色区域的实现
Feb 04 PHP
phpStudy中升级MySQL版本到5.7.17的方法步骤
Aug 03 PHP
PHP 实现公历日期与农历日期的互转换
Sep 13 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
Nov 14 PHP
thinkphp框架类库扩展操作示例
Nov 26 PHP
解决cPanel无法安装php5.2.17
Jun 22 #PHP
destoon设置自定义搜索的方法
Jun 21 #PHP
destoon后台网站设置变成空白的解决方法
Jun 21 #PHP
destoon常用的安全设置概述
Jun 21 #PHP
destoon安全设置中需要设置可写权限的目录及文件
Jun 21 #PHP
destoon整合ucenter后注册页面不跳转的解决方法
Jun 21 #PHP
destoon整合UCenter图文教程
Jun 21 #PHP
You might like
一个用php3编写的简单计数器
2006/10/09 PHP
php之curl设置超时实例
2014/11/03 PHP
Thinkphp和onethink实现微信支付插件
2016/04/13 PHP
Laravel框架实现多个视图共享相同数据的方法详解
2019/07/09 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Nigma vs Alliance BO5 第三场2.14
2021/03/10 DOTA
ajax上传时参数提交不更新等相关问题
2012/12/11 Javascript
jquery自定义函数的多种方法
2014/01/09 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
Jquery方式获取iframe页面中的 Dom元素
2014/05/07 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JavaScript设计模式经典之工厂模式
2016/02/24 Javascript
JavaScript中的原型prototype完全解析
2016/05/10 Javascript
JavaScript的instanceof运算符学习教程
2016/06/08 Javascript
详解Vue.js——60分钟组件快速入门(上篇)
2016/12/05 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
Vue自定义指令使用方法详解
2017/08/21 Javascript
详解es6新增数组方法简便了哪些操作
2019/05/09 Javascript
LayUi数据表格自定义赋值方式
2019/10/26 Javascript
javascript-hashchange事件和历史状态管理实例分析
2020/04/18 Javascript
python实现系统状态监测和故障转移实例方法
2013/11/18 Python
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
2014/01/22 Python
python基础教程之类class定义使用方法
2014/02/20 Python
使用Turtle画正螺旋线的方法
2017/09/22 Python
速记Python布尔值
2017/11/09 Python
pycharm远程调试openstack的图文教程
2017/11/21 Python
解读python logging模块的使用方法
2018/04/17 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
美国林业供应商:Forestry Suppliers
2019/05/01 全球购物
Parfumdreams英国:香水和化妆品
2019/05/10 全球购物
七年级地理教学反思
2014/01/26 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python