美图秀秀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 相关文章推荐
一个SQL管理员的web接口
Oct 09 PHP
PHP新手上路(十三)
Oct 09 PHP
PHP 编程的 5个良好习惯
Feb 20 PHP
PHP5中使用PDO连接数据库的方法
Aug 01 PHP
PHP防止跨域提交表单
Nov 01 PHP
如何在HTML 中嵌入 PHP 代码
May 13 PHP
php有效防止同一用户多次登录
Nov 19 PHP
微信支付开发维权通知实例
Jul 12 PHP
php函数mkdir实现递归创建层级目录
Oct 27 PHP
php中strtotime函数性能分析
Nov 20 PHP
老生常谈PHP数组函数array_merge(必看篇)
May 25 PHP
PHP文件打开关闭及读写操作示例解析
Aug 06 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
linux中cd命令使用详解
2015/01/08 PHP
javascript 操作Word和Excel的实现代码
2009/10/26 Javascript
XENON基于JSON变种
2010/07/27 Javascript
node.js 一个简单的页面输出实现代码
2012/03/07 Javascript
jQuery之尺寸调整组件的深入解析
2013/06/19 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
Javascript图片上传前的本地预览实例
2014/06/16 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
jquery中filter方法用法实例分析
2015/02/06 Javascript
JS制作图形验证码实现代码
2020/10/19 Javascript
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
webpack+vue.js快速入门教程
2016/10/12 Javascript
bootstrap下拉菜单使用方法解析
2017/01/13 Javascript
Javascript实现登录记住用户名和密码功能
2017/03/22 Javascript
vue jsx 使用指南及vue.js 使用jsx语法的方法
2017/11/11 Javascript
小程序显示弹窗时禁止下层的内容滚动实现方法
2019/03/20 Javascript
[01:01:52]DOTA2-DPC中国联赛正赛 iG vs LBZS BO3 第一场 3月4日
2021/03/11 DOTA
Python中计算三角函数之cos()方法的使用简介
2015/05/15 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
Python基于回溯法子集树模板解决0-1背包问题实例
2017/09/02 Python
在python中使用正则表达式查找可嵌套字符串组
2017/10/24 Python
基于numpy.random.randn()与rand()的区别详解
2018/04/17 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
Python中dict和set的用法讲解
2019/03/28 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
selenium WebDriverWait类等待机制的实现
2020/03/18 Python
解决python DataFrame 打印结果不换行问题
2020/04/09 Python
使用CSS媒体查询(Media Queries)和JavaScript判断浏览器设备类型的方法
2014/04/03 HTML / CSS
HTML5的自定义属性data-*详细介绍和JS操作实例
2014/04/10 HTML / CSS
科沃斯机器人官网商城:Ecovacs
2016/08/29 全球购物
李宁官方网店:中国运动品牌
2017/11/02 全球购物
酒店营销策划方案
2014/02/07 职场文书
学校校庆演讲稿
2014/05/22 职场文书
小学优秀教师事迹材料
2014/12/16 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书