美图秀秀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 strtotime 函数UNIX时间戳
Jan 14 PHP
php输出xml格式字符串(用的这个)
Jul 12 PHP
php图片的裁剪与缩放生成符合需求的缩略图
Jan 11 PHP
PHP将两个关联数组合并函数提高函数效率
Mar 18 PHP
PHP的preg_match匹配字符串长度问题解决方法
May 03 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
自制PHP框架之设计模式
May 07 PHP
php中青蛙跳台阶的问题解决方法
Oct 14 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
php使用fullcalendar日历插件详解
Mar 06 PHP
PHP模版引擎原理、定义与用法实例
Mar 29 PHP
php7连接MySQL实现简易查询程序的方法
Oct 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
php实现水仙花数的4个示例分享
2014/04/08 PHP
php实现PDO中捕获SQL语句错误的方法
2017/02/16 PHP
JS判断页面加载状态以及添加遮罩和缓冲动画的代码
2012/10/11 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
js小数运算出现多位小数如何解决
2015/10/08 Javascript
jQuery判断元素是否显示 是否隐藏的简单实现代码
2016/05/19 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
Web制作验证码功能实例代码
2017/06/19 Javascript
JS实现图片转换成base64的各种应用场景实例分析
2018/06/22 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
JS实现倒计时图文效果
2018/11/17 Javascript
微信小程序使用字体图标的方法
2019/05/23 Javascript
JavaScript使用canvas绘制随机验证码
2020/02/17 Javascript
Vue 打包体积优化方案小结
2020/05/20 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
Python中运行并行任务技巧
2015/02/26 Python
简介Python设计模式中的代理模式与模板方法模式编程
2016/02/02 Python
详解Python nose单元测试框架的安装与使用
2017/12/20 Python
Python实现字典的遍历与排序功能示例
2017/12/23 Python
django 发送手机验证码的示例代码
2018/04/25 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
详解python selenium 爬取网易云音乐歌单名
2019/03/28 Python
django 基于中间件实现限制ip频繁访问过程详解
2019/07/30 Python
基于python实现计算两组数据P值
2020/07/10 Python
Visual Studio code 配置Python开发环境
2020/09/11 Python
使用Python爬虫爬取小红书完完整整的全过程
2021/01/19 Python
英国在线花园中心:You Garden
2018/06/03 全球购物
员工年终自我评价
2014/09/14 职场文书
简易离婚协议书范本
2014/10/24 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python
tp5使用layui实现多个图片上传(带附件选择)的方法实例
2021/11/17 PHP
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB