美图秀秀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 相关文章推荐
层叠菜单的动态生成
Oct 09 PHP
php session 预定义数组
Mar 16 PHP
windows下升级PHP到5.3.3的过程及注意事项
Oct 12 PHP
屏蔽机器人从你的网站搜取email地址的php代码
Nov 14 PHP
php判断字符串在另一个字符串位置的方法
Feb 27 PHP
php操作XML、读取数据和写入数据的实现代码
Aug 15 PHP
PHP使用CURL模拟登录的方法
Jul 08 PHP
简单谈谈PHP vs Node.js
Jul 17 PHP
浅谈PHP中如何实现Hook机制
Nov 14 PHP
php中上传文件的的解决方案
Sep 25 PHP
Thinkphp5框架简单实现钩子(Hook)行为的方法示例
Sep 03 PHP
php 的多进程操作实践案例分析
Feb 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
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
php使用wordwrap格式化文本段落的方法
2015/03/17 PHP
thinkphp3.2实现上传图片的控制器方法
2016/04/28 PHP
[企业公众号]升级到[企业微信]之后发送消息失败的解决方法
2017/06/30 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
2011/08/02 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
纯js网页画板(Graphics)类简介及实现代码
2012/12/24 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
JavaScript实现文本框中默认显示背景图片在获得焦点后消失的方法
2015/07/01 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
微信JSSDK上传图片
2015/08/23 Javascript
微信小程序 input输入框详解及简单实例
2017/01/10 Javascript
JavaScript变量作用域_动力节点Java学院整理
2017/06/27 Javascript
JavaScript数据结构之双向链表和双向循环链表的实现
2017/11/28 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
在vue中使用公共过滤器filter的方法
2018/06/26 Javascript
vue路由对不同界面进行传参及跳转的总结
2019/04/20 Javascript
开发Node CLI构建微信小程序脚手架的示例
2020/03/27 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
Python编程之微信推送模板消息功能示例
2017/08/21 Python
python使用docx模块读写docx文件的方法与docx模块常用方法详解
2020/02/17 Python
解决margin 外边距合并问题
2019/07/03 HTML / CSS
html Table 表头固定的实现
2019/01/22 HTML / CSS
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
介绍一下Linux中的链接
2016/06/05 面试题
美工的岗位职责
2013/11/14 职场文书
活动策划邀请函
2014/02/06 职场文书
团支书竞选演讲稿
2014/04/28 职场文书
拾金不昧锦旗标语
2014/06/27 职场文书
学生穿着不得体检讨书
2014/10/12 职场文书
银行自荐信怎么写
2015/03/05 职场文书
Go 内联优化让程序员爱不释手
2022/06/21 Golang