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 相关文章推荐
BBS(php &amp; mysql)完整版(一)
Oct 09 PHP
php中DOMDocument简单用法示例代码(XML创建、添加、删除、修改)
Dec 19 PHP
php数组函数序列之array_values() 获取数组元素值的函数与方法
Oct 30 PHP
深入PHP magic quotes的详解
Jun 17 PHP
php下载文件源代码(强制任意文件格式下载)
May 09 PHP
ThinkPHP分页实例
Oct 15 PHP
PHP常用处理静态操作类
Apr 03 PHP
PHP读取大文件末尾N行的高效方法推荐
Jun 03 PHP
PHP文件上传、客户端和服务器端加限制、抓取错误信息、完整步骤解析
Jan 12 PHP
php加密之discuz内容经典加密方式实例详解
Feb 04 PHP
PHP实现创建一个RPC服务操作示例
Feb 23 PHP
ThinkPHP5框架中使用JWT的方法示例
Jun 03 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下过滤html代码的函数 提高程序安全性
2010/03/02 PHP
PHP入门教程之自定义函数用法详解(创建,调用,变量,参数,返回值等)
2016/09/11 PHP
PHP最常用的正则表达式
2017/02/13 PHP
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
2013/04/09 Javascript
JS动态添加Table的TR,TD实现方法
2015/01/28 Javascript
js删除对象/数组中null、undefined、空对象及空数组方法示例
2018/11/14 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
为vue项目自动设置请求状态的配置方法
2019/06/09 Javascript
使用layui的layer组件做弹出层的例子
2019/09/27 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[03:21]辉夜杯主赛事 12月25日TOP5
2015/12/26 DOTA
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python计算两个矩形框重合百分比的实例
2018/11/07 Python
Python字符串大小写转换拼接删除空白
2019/09/19 Python
python如何实现不用装饰器实现登陆器小程序
2019/12/14 Python
pycharm实现在子类中添加一个父类没有的属性
2020/03/12 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
Python pandas对excel的操作实现示例
2020/07/21 Python
说说你所熟悉或听说过的j2ee中的几种常用模式?及对设计模式的一些看法
2012/05/24 面试题
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
办公室岗位职责
2014/02/12 职场文书
小学少先队活动方案
2014/02/18 职场文书
公司财务流程之主管工作流程
2014/03/03 职场文书
小学美术兴趣小组活动总结
2014/07/07 职场文书
售房协议书
2014/08/19 职场文书
村委会贫困证明范文
2014/09/21 职场文书
2014年公司工作总结
2014/11/22 职场文书
2014-2015学年工作总结
2014/11/27 职场文书
教师党员个人总结
2015/02/10 职场文书
教师辞职信范文
2015/02/28 职场文书
试用期自我评价范文
2015/03/10 职场文书
高中军训感想
2015/08/07 职场文书
导游词之吉林花园山
2019/10/17 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
聊聊SpringBoot自动装配的魔力
2021/11/17 Java/Android