php实现粘贴截图并完成上传功能


Posted in PHP onMay 17, 2015

今天发现segmentfault的评论留言里面可以粘贴上传图片,于是研究了下怎么实现的!
原理很简单其实就是监控粘贴事件,然后检测是否粘贴的东西里面有图片,有的话直接触发ajax上传

代码可以直接运行,有兴趣你们可以试试

<?php
header("Access-Control-Allow-Origin:*");
$url = 'http://'.$_SERVER['HTTP_HOST'];
$file = (isset($_POST["file"])) ? $_POST["file"] : '';
if($file)
{
$data = base64_decode(str_replace('data:image/png;base64,', '', $file)); //截图得到的只能是png格式图片,所以只要处理png就行了
$name = md5(time()) . '.png'; // 这里把文件名做了md5处理
file_put_contents($name, $data);
echo"$url/$name";
die;
}
?>


<div id="box"style="width:400px;height:400px;border:1px solid;"contenteditable>
</div>
<input type="hidden"name="img"value=""id="img_puth"/>

<script>
//查找box元素,检测当粘贴时候,
document.querySelector('#box').addEventListener('paste', function(e) {

//判断是否是粘贴图片
 if (e.clipboardData && e.clipboardData.items[0].type.indexOf('image') > -1) 
{
var that = this,
reader = new FileReader();
file = e.clipboardData.items[0].getAsFile();

//ajax上传图片
 reader.onload = function(e) 
{
 var xhr = new XMLHttpRequest(),
 fd = new FormData();

 xhr.open('POST', '', true);
 xhr.onload = function () 
{
 var img = new Image();
 img.src = xhr.responseText;

 // that.innerHTML = '<img src="'+img.src+'"alt=""/>';
 document.getElementById("img_puth").value = img.src;
}

 // this.result得到图片的base64 (可以用作即时显示)
 fd.append('file', this.result); 
 that.innerHTML = '<img src="'+this.result+'"alt=""/>';
xhr.send(fd);
}
reader.readAsDataURL(file);
}
}, false);
</script>

以上所述就是本文的全部内容了,希望大家能够喜欢。

PHP 相关文章推荐
全文搜索和替换
Oct 09 PHP
php之字符串变相相减的代码
Mar 19 PHP
PHP下几种删除目录的方法总结
Aug 19 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
php表单提交问题的解决方法
Apr 12 PHP
php mysql 判断update之后是否更新了的方法
Jan 10 PHP
php使用curl发送json格式数据实例
Dec 17 PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 PHP
php导入模块文件分享
Mar 17 PHP
PHP检测链接是否存在的代码实例分享
May 06 PHP
php微信公众号开发(3)php实现简单微信文本通讯
Dec 15 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
php获取json数据所有的节点路径
May 17 #PHP
php中memcache 基本操作实例
May 17 #PHP
PHP实现过滤各种HTML标签
May 17 #PHP
支持中文的PHP按字符串长度分割成数组代码
May 17 #PHP
php 批量查询搜狗sogou代码分享
May 17 #PHP
PHP解密Unicode及Escape加密字符串
May 17 #PHP
PHP实现远程下载文件到本地
May 17 #PHP
You might like
德生9700DX电路分析
2021/03/02 无线电
php微信公众号开发之简答题
2018/10/20 PHP
JavaScript 变量基础知识
2009/11/07 Javascript
JavaScript类和继承 prototype属性
2010/09/03 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
JS与C#编码解码
2013/12/03 Javascript
Flow之一个新的Javascript静态类型检查器
2015/12/21 Javascript
高效Web开发的10个jQuery代码片段
2016/07/22 Javascript
JS实现的几个常用算法
2016/11/12 Javascript
BootStrap整体框架之基础布局组件
2016/12/15 Javascript
Angular1.x复杂指令实例详解
2017/03/01 Javascript
NodeJS学习笔记之Module的简介
2017/03/24 NodeJs
Bootstrap常用组件学习(整理)
2017/03/24 Javascript
js Date()日期函数浏览器兼容问题解决方法
2017/09/12 Javascript
Node.js中sequelize时区的配置方法
2017/12/10 Javascript
解析vue中的$mount
2017/12/21 Javascript
JavaScript设计模式之缓存代理模式原理与简单用法示例
2018/08/07 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
[01:24:34]2014 DOTA2华西杯精英邀请赛5 24 DK VS LGD
2014/05/25 DOTA
Python程序中设置HTTP代理
2016/11/06 Python
python selenium 获取标签的属性值、内容、状态方法
2018/06/22 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
python函数声明和调用定义及原理详解
2019/12/02 Python
mac 上配置Pycharm连接远程服务器并实现使用远程服务器Python解释器的方法
2020/03/19 Python
pytorch随机采样操作SubsetRandomSampler()
2020/07/07 Python
PHP引擎php.ini参数优化深入讲解
2021/03/24 PHP
职员竞岗演讲稿
2014/05/14 职场文书
药店采购员岗位职责
2014/09/30 职场文书
晚会开幕词
2015/01/28 职场文书
搞笑老公保证书
2015/02/26 职场文书
英语演讲开场白
2015/05/29 职场文书
信息简报范文
2015/07/21 职场文书
《猴王出世》教学反思
2016/02/23 职场文书
解析探秘fescar分布式事务实现原理
2022/02/28 Java/Android
详解Go语言中配置文件使用与日志配置
2022/06/01 Golang