美图秀秀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生成月历代码
Jun 14 PHP
Notice: Trying to get property of non-object problem(PHP)解决办法
Mar 11 PHP
ThinkPHP登录功能的实现方法
Aug 20 PHP
Yii中CGridView关联表搜索排序方法实例详解
Dec 03 PHP
php实现无限级分类
Dec 24 PHP
php获得网站访问统计信息类Compete API用法实例
Apr 02 PHP
Symfony2函数用法实例分析
Mar 18 PHP
PHP实现的网站目录扫描索引工具
Sep 08 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
php cookie 详解使用实例
Nov 03 PHP
thinkPHP批量删除的实现方法分析
Nov 09 PHP
PHP去除字符串最后一个字符的三种方法实例
Mar 01 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
ThinkPHP3.1查询语言详解
2014/06/19 PHP
php+mysqli批量查询多张表数据的方法
2015/01/29 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
php使用curl伪造浏览器访问操作示例
2019/09/30 PHP
PHP实现倒计时功能
2020/11/16 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
Tips 带三角可关闭的文字提示
2010/10/06 Javascript
JavaScript之编码规范 推荐
2012/05/23 Javascript
解决css和js的{}与smarty定界符冲突问题的两种方法
2013/09/10 Javascript
jQuery中$.fn的用法示例介绍
2013/11/05 Javascript
Chrome下ifame父窗口调用子窗口的问题示例探讨
2014/03/17 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
javascript实现超炫的向上滑行菜单实例
2015/08/03 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
JS组件Bootstrap Select2使用方法解析
2016/05/30 Javascript
基于JS模仿windows文件按名称排序效果
2016/06/29 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
JS填写银行卡号每隔4位数字加一个空格
2016/12/19 Javascript
微信小程序 五星评分的实现实例
2017/08/04 Javascript
浅谈Vue 数据响应式原理
2018/05/07 Javascript
vue.js的简单自动求和计算实例
2019/11/08 Javascript
原生js实现碰撞检测
2020/03/12 Javascript
JavaScript实现通讯录功能
2020/12/27 Javascript
Python lxml解析HTML并用xpath获取元素的方法
2019/01/02 Python
75条笑死人的知乎神回复,用60行代码就爬完了
2019/05/06 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Origins加拿大官网:雅诗兰黛集团高端植物护肤品牌
2017/11/19 全球购物
美国摩托车头盔、零件、齿轮及配件商店:Cycle Gear
2019/06/12 全球购物
浙大毕业生自荐信
2014/01/26 职场文书
共产党员承诺书
2014/03/25 职场文书
身边的榜样活动方案
2014/08/20 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
党的群众路线专项整治方案
2014/11/03 职场文书
django上传文件的三种方式
2021/04/29 Python
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers