美图秀秀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 数据库字段复用的基本原理与示例
Jul 22 PHP
PHP 登录完成后如何跳转上一访问页面
Jan 14 PHP
微信支付开发教程(一)微信支付URL配置
May 28 PHP
php强制更新图片缓存的方法
Feb 11 PHP
php模拟服务器实现autoindex效果的方法
Mar 10 PHP
php实现的mongodb操作类实例
Apr 03 PHP
PHP的Laravel框架结合MySQL与Redis数据库的使用部署
Mar 21 PHP
php自定义中文字符串截取函数substr_for_gb2312及substr_for_utf8示例
May 28 PHP
PHP实现的同步推荐操作API接口案例分析
Nov 30 PHP
thinkPHP5.0框架应用请求生命周期分析
Mar 25 PHP
PHP使用Redis长连接的方法详解
Feb 12 PHP
php中文语义分析实现方法示例
Sep 28 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
JAVA/JSP学习系列之四
2006/10/09 PHP
用PHP实现Ftp用户的在线管理的代码
2007/03/06 PHP
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php 全局变量范围分析
2009/08/07 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP pear安装配置教程
2016/05/14 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
PHP下用Swoole实现Actor并发模型的方法
2019/06/12 PHP
PHP 计算至少是其他数字两倍的最大数的实现代码
2020/05/26 PHP
Jquery中LigerUi的弹出编辑框(实现方法)
2013/07/09 Javascript
使用javascript插入样式
2016/03/14 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
手把手教你使用vue-cli脚手架(图文解析)
2017/11/08 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
微信小程序获取用户绑定手机号方法示例
2019/07/21 Javascript
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
python实现爬取千万淘宝商品的方法
2015/06/30 Python
简单上手Python中装饰器的使用
2015/07/12 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python实现KNN邻近算法
2021/01/28 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
Python常见反爬虫机制解决方案
2020/06/01 Python
Django serializer优化类视图的实现示例
2020/07/16 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
python不同版本的_new_不同点总结
2020/12/09 Python
Python 调用C++封装的进一步探索交流
2021/03/04 Python
CSS的background属性及CSS3的背景图片设置总结
2016/06/13 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
2014/07/07 HTML / CSS
优秀的自荐信要注意哪些
2014/01/03 职场文书
中华魂演讲稿
2014/05/13 职场文书
基于Python实现的购物商城管理系统
2021/04/27 Python
golang 实现两个结构体复制字段
2021/04/28 Golang
Redis如何实现验证码发送 以及限制每日发送次数
2022/04/18 Redis