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 相关文章推荐
使用PHP制作新闻系统的思路
Oct 09 PHP
解决php中Cannot send session cache limiter 的问题的方法
Apr 27 PHP
PHP XML操作类DOMDocument
Dec 16 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
Jan 04 PHP
使用PHP similar text计算两个字符串相似度
Nov 06 PHP
关于PHP文件的自动运行方法分析
May 13 PHP
详谈PHP面向对象中常用的关键字和魔术方法
Feb 04 PHP
详解PHP防止直接访问.php 文件的实现方法
Jul 28 PHP
通过PHP设置BugFree获取邮箱通知
Apr 25 PHP
YII2.0框架行为(Behavior)深入详解
Jul 26 PHP
因str_replace导致的注入问题总结
Aug 08 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
PHP使用Pthread实现的多线程操作实例
2015/11/14 PHP
Symfony的安装和配置方法
2016/03/17 PHP
php文件上传后端处理小技巧
2016/05/22 PHP
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
js报错 Object doesn't support this property or method的原因分析
2011/03/31 Javascript
Jquery操作下拉框(DropDownList)实现取值赋值
2013/08/13 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
JQuery性能优化的几点建议
2014/05/14 Javascript
js中confirm实现执行操作前弹出确认框的方法
2014/11/01 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
记录一次完整的react hooks实践
2019/03/11 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
Node.js path模块,获取文件后缀名操作
2020/11/07 Javascript
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python2.7读取PDF文件的方法示例
2017/07/13 Python
Python实现生成随机数据插入mysql数据库的方法
2017/12/25 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
Python多进程原理与用法分析
2018/08/21 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
Django使用 Bootstrap 样式修改书籍列表过程解析
2019/08/09 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
使用CSS3来绘制一个月食图案
2015/07/18 HTML / CSS
Microsoft新加坡官方网站:购买微软最新软件和技术产品
2016/10/28 全球购物
采购内勤岗位职责
2013/12/10 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
质量保证书
2015/01/17 职场文书
优质护理心得体会
2016/01/22 职场文书
2019年让高校“心动”的自荐信
2019/03/25 职场文书
java后台调用接口及处理跨域问题的解决
2022/03/24 Java/Android