美图秀秀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中操作MySQL数据库的一些要注意的问题
Oct 09 PHP
PHP加速 eAccelerator配置和使用指南
Jun 05 PHP
php采集文章中的图片获取替换到本地(实现代码)
Jul 08 PHP
php递归获取目录内文件(包含子目录)封装类分享
Dec 25 PHP
PHP实现格式化文件数据大小显示的方法
Jan 03 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
thinkPHP中验证码的简单使用方法
Dec 26 PHP
Yii全局函数用法示例
Jan 22 PHP
PHP 信号管理知识整理汇总
Feb 19 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
实例解析php的数据类型
Oct 24 PHP
PhpSpreadsheet设置单元格常用操作汇总
Nov 13 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
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
Yii2使用小技巧之通过 Composer 添加 FontAwesome 字体资源
2014/06/22 PHP
php.ini中date.timezone设置详解
2016/11/20 PHP
PHP随机数函数rand()与mt_rand()的讲解
2019/03/25 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
jQuery让控件左右移动的三种实现方法
2013/09/08 Javascript
setTimeout()递归调用不加引号出错的解决方法
2014/09/05 Javascript
JavaScript Ajax实现异步通信
2016/12/14 Javascript
微信小程序 判断手机号的实现代码
2017/04/19 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
react-router4 配合webpack require.ensure 实现异步加载的示例
2018/01/18 Javascript
Node.js进阶之核心模块https入门
2018/05/23 Javascript
jquery.param()实现数组或对象的序列化方法
2018/10/08 jQuery
jQuery zTree树插件的使用教程
2019/08/16 jQuery
vue 实现购物车总价计算
2019/11/06 Javascript
[05:06]DOTA2-DPC中国联赛 正赛 VG vs Magma选手采访
2021/03/11 DOTA
Python中super关键字用法实例分析
2015/05/28 Python
Python求算数平方根和约数的方法汇总
2016/03/09 Python
Python使用re模块实现信息筛选的方法
2018/04/29 Python
深入解析Python小白学习【操作列表】
2019/03/23 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
python实现最大优先队列
2019/08/29 Python
Python中random模块常用方法的使用教程
2020/10/04 Python
Python的3种运行方式:命令行窗口、Python解释器、IDLE的实现
2020/10/10 Python
加拿大床上用品、家居装饰、厨房和浴室产品购物网站:Linen Chest
2018/06/05 全球购物
Perfume’s Club意大利官网:欧洲美妆电商
2019/05/03 全球购物
德国婴儿服装和婴儿用品购买网站:Baby Sweets
2019/12/08 全球购物
局域网定义和特性
2016/01/23 面试题
班长自荐书范文
2014/02/11 职场文书
大学校务公开实施方案
2014/03/31 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
张丽莉观后感
2015/06/16 职场文书
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android
php访问对象中的成员的实例方法
2021/11/17 PHP