PHP流式上传和表单上传(美图秀秀)

最近需要开发一个头像上传的功能,找了很多都需要授权的,后来找到了美图秀秀,功能非常好用。

<?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" 。

转载于:https://www.cnblogs.com/52php/p/5675325.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/403446.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux下如何安装最新版本工具

此博文主要考虑到两个方面的需求&#xff1a; 1.主机处于离线状态&#xff0c;需要离线安装相关工具包&#xff1b; 2.主机的软件源不是最新的&#xff0c;通过在线更新无法达到需求的版本&#xff1b; 此文以获取openssh相关工具包&#xff0c;其他工具包原理类似&#xff…

element-ui 设置table width %百分比

这里的width12设置成min-width!2% 记得所有column都设置百分比哦 <el-table-columnprop"date"label"日期"min-width"12%"></el-table-column>

笔记一

1、logo用<a>标签包围 并给img设置&#xff1a;border&#xff1a;0&#xff08;放置IE浏览器出现框&#xff09; 2、搜索框内有图片&#xff0c;处理方式&#xff1a; 父级div设置border&#xff0c;并调好位置 子级input设置border 0 ;height 100% 图标用<span>包…

[笔记]java-package

[笔记]java&#xff0d;package import 关键字导入一个完整的库时,就会获得“包”(Package)。例如: import java.util.*; 若想导入单独一个类,可在 import 语句里指定那个类的名字: import java.util.Vector; 为 Java 创建一个源码文件的时候,它通常叫作一个“编辑单元”(有时也…

如何安装sshd服务用于远程登录

此博文前提是系统默认没有安装openssh-server&#xff0c;而且现在大部分系统默认只包含openssh-client&#xff0c;这对于需要远程调试和管理的开发者们很不方便&#xff0c;因此本文探讨如何离线安装sshd服务&#xff0c;对于可以在线安装的就比较方便了&#xff0c;可参阅其…

C++中const、volatile、mutable的用法

From: http://blog.csdn.net/wuliming_sc/article/details/3717017 const修饰普通变量和指针 const修饰变量&#xff0c;一般有两种写法&#xff1a; const TYPE value; TYPE const value; 这两种写法在本质上是一样的。它的含义是&#xff1a;const修饰的类型为TYPE的变…

调用未绑定的父类方法和使用supper 函数 之间的选择.

class New_int(int): # 定义一个新的类 继承 int 类def __add__(self,other): # 重写 运算符 # __add__ 就是 int 中 的行为return int.__sub__(self,other) # 重写的 加法运算符 调用 int类 里面的 减法运算运算符def __sub__(self,other):return int.__add__(self…

VMware Tools installation cannot be started manually while Easy Install is in progress.

出现此错误提示主要是由于虚拟机设置里面 CD/DVD 和 Floppy 选项被占用导致 VMware Tools 虚拟光驱无法加载导致&#xff0c;因此设置如下&#xff1a; VM –> Settings –> Hardware –> CD/DVD && CD/DVD 2 && Floppy 这三个选项全部设置为 Auto d…

派生类类型可以转换为基类类型,反之则不行

派生类的对象都含有基类对象作为其一部分&#xff0c;我们可以将指向派生类型的引用转换为指向它的基类型的引用&#xff0c;像转换指针一样&#xff0c;我们可以用派生类的对象初始化或赋值基类对象&#xff0c;反之却不行。class base{ public: }; class derived:public base…

Mac 下隐藏显示隐藏文件

直接使用快捷键&#xff1a; 在 macOS Sierra&#xff0c;可以使用快捷键⌘⇧.(Command Shift .) 来快速&#xff08;在 Finder 中&#xff09;显示和隐藏隐藏文件了。 Mac 下隐藏显示隐藏文件

/bin/tar: 从成员名中删除开头的“/”

From: http://www.361way.com/tar-error/1550.html 今天在使用tar进行打包时&#xff0c;发现报了‘从成员名中删除开头的“/”’的错误。我使用的打包语句如下&#xff1a; [rootbj~]# tar czvf test.tar.gz /root/tomcat/tar: 从成员名中删除开头的“/”/root/tomcat//root…

关于单片机中断

中断&#xff1a;CPU停止当前任务&#xff0c;去处理中断内容&#xff0c;处理完后自动恢复以前任务。 单片机有5个中断源&#xff0c;2个中断优先级&#xff0c;中断受两级控制&#xff1a; 1、CPU开总中断&#xff1b; 2、中断源开中断。 中断源&#xff1a;引起中断事件的类…

不带缓存的I/O和标准(带缓存的)I/O

首先&#xff0c;先稍微了解系统调用的概念&#xff1a;   系统调用&#xff0c;英文名system call&#xff0c;每个操作系统都在内核里有一些内建的函数库&#xff0c;这些函数可以用来完成一些系统系统调用把应用程序的请求传给内核&#xff0c;调用相应的的内核函数完成所…

uni.$emit和uni.$on用法;uni-app微信小程序页面通讯;微信小程序页面通讯

uni-app的官方api uni.$on 场景&#xff1a; 微信小程序两个页面甚至多个页面之间&#xff0c;可能共用一个参数或者需要相互传递使用参数。例如页面A点击按钮&#xff0c;需要把A页面的item数据&#xff0c;赋值给页面B的formData&#xff0c;但是页面A只是传递数据给B&#x…

转:探索 AIX 6:在 AIX 6 上配置 iSCSI Target

引言iSCSI&#xff08;Internet Small Computer System Interface&#xff09;被业界认为是非常廉价的 SAN 解决方案&#xff0c;一直在中低端应用领域被市场所看好。 iSCSI 客户端和服务端都既可以通过硬件方式实现&#xff0c;也能通过软件方式的&#xff0c;其优劣区别就是在…

利用python生成一个导出数据库的bat脚本文件

# 环境: python3.xdef getExportDbSql(db, index): # 获取导出一个数据库实例的sql语句sql mysqldump -u%s -p%s -h%s -P%d --default-character-setutf8 --databases mu_ins_s%s > %s.s%d.mu_ins_%d.sql %(db[user], db[pwd], db[host], db[port], index, db[server],…

iOS开发极光推送显示 开发证书没有通过验证 是否重新上传证书?解决方法

1.证书密码错误 2证书环境不匹 3导证书时因手误把私钥导出来了&#xff0c;而不是证书 1.当前上传的p12证书密码输入有误&#xff1b; 2. 证书导出的时候展开了证书&#xff0c;把个人私钥导了出来&#xff0c;导证书的时候请不要展开证书&#xff1b; 3.当前上传的证书环境不对…

微信小程序禁止页面上下滑动;uni-app微信小程序禁止页面上下滑动;uni-app小程序上下滑动;

阻止小程序某个页面上下滑动&#xff0c;最简单有效方法&#xff1b;直接对小程序当前页的最外层标签盒子&#xff0c;设置固定定位即可&#xff01; 设置固定定位后&#xff0c;页面的最大盒子宽度可能不是自动撑满的&#xff0c;那就自己在calc计算下宽度即可 .box {// 加这…

安装 groovy eclipse 插件

原文出处&#xff1a;http://blog.chenlb.com/2008/12/install-groovy-eclipse-plugin.html 写代码最好还是要个ide&#xff0c;最过学习 groovy。平时用 eclipse 开发 java 程序&#xff0c;写 groovy 还是用 eclipse 吧&#xff08;虽然目前 groovy 的 eclipse 插件不是最好。…

Linux 统计文件行数,字节数。

语法&#xff1a;wc [选项] 文件… 说明&#xff1a;该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名&#xff0c;则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。 该命令各选项含义如下&#xff1a; - c 统计字节…