美图秀秀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生成静态页
Nov 25 PHP
用PHP函数解决SQL injection
Dec 09 PHP
PHP 的ArrayAccess接口 像数组一样来访问你的PHP对象
Oct 12 PHP
PHP学习笔记之数组篇
Jun 28 PHP
php守护进程 加linux命令nohup实现任务每秒执行一次
Jul 04 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
Jun 03 PHP
PHP中unset,array_splice删除数组中元素的区别
Jul 28 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
THINKPHP支持YAML配置文件的设置方法
Mar 17 PHP
Yii使用技巧大汇总
Dec 29 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 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
Laravel中Trait的用法实例详解
2016/03/16 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
js 自定义的联动下拉框
2010/02/07 Javascript
基于jquery的下拉框改变动态添加和删除表格实现代码
2020/09/12 Javascript
jquery触发a标签跳转事件示例代码
2013/07/21 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
javascript/jquery获取地址栏url参数的方法
2014/03/05 Javascript
Javascript window对象详解
2014/11/12 Javascript
javascript动画算法实例分析
2015/07/31 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
Webpack的dll功能使用
2018/06/28 Javascript
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
2019/06/10 Javascript
react quill中图片上传由默认转成base64改成上传到服务器的方法
2019/10/30 Javascript
mpvue实现微信小程序快递单号查询代码
2020/04/03 Javascript
python转换摩斯密码示例
2014/02/16 Python
Python中使用pprint函数进行格式化输出的教程
2015/04/07 Python
Python验证码识别的方法
2015/07/10 Python
Python 迭代器工具包【推荐】
2016/05/06 Python
python字符串常用方法
2018/06/14 Python
Pandas透视表(pivot_table)详解
2019/07/22 Python
Python3 Tkinkter + SQLite实现登录和注册界面
2019/11/19 Python
Pytorch释放显存占用方式
2020/01/13 Python
python创建文本文件的简单方法
2020/08/30 Python
详解selenium + chromedriver 被反爬的解决方法
2020/10/28 Python
Django与AJAX实现网页动态数据显示的示例代码
2021/02/24 Python
vivo智能手机官方商城:vivo
2016/09/22 全球购物
英国排名第一的最新设计师品牌手表独立零售商:TIC Watches
2016/09/24 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
网络工程师自荐书范文
2014/04/01 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
写给领导的感谢信
2015/01/22 职场文书
小学生安全教育心得体会
2016/01/15 职场文书