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巧获服务器端信息
Dec 06 PHP
基于initPHP的框架介绍
Apr 18 PHP
解析php php_openssl.dll的作用
Jul 01 PHP
thinkphp验证码显示不出来的解决方法
Mar 29 PHP
php使用pack处理二进制文件的方法
Jul 03 PHP
分享一段PHP制作的中文拼音首字母工具类
Dec 11 PHP
PHP curl伪造IP地址和header信息代码实例
Apr 27 PHP
[原创]PHP简单开启curl的方法(测试可行)
Jan 11 PHP
php文件管理基本功能简单操作
Jan 16 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
阿里云Win2016安装Apache和PHP环境图文教程
Mar 11 PHP
PHP+Session防止表单重复提交的解决方法
Apr 09 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 应用程序的安全 -- 不能违反的四条安全规则
2006/11/26 PHP
DISCUZ在win2003环境下 Unable to access ./include/common.inc.php in... 的问题终极解决方案
2011/11/21 PHP
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
destoon实现商铺管理主页设置增加新菜单的方法
2014/06/26 PHP
PHP使用mongoclient简单操作mongodb数据库示例
2019/02/08 PHP
php转换上传word文件为PDF的方法【基于COM组件】
2019/06/10 PHP
文本链接逐个出现的js脚本
2007/12/12 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
2011/09/29 Javascript
js中for in的用法示例解析
2013/12/25 Javascript
node.js中的http.createClient方法使用说明
2014/12/15 Javascript
Javascript无参数和有参数类继承问题解决方法
2015/03/02 Javascript
jQuery选择器之基本选择器与层次选择器
2015/03/03 Javascript
JQuery中$.each 和$(selector).each()的区别详解
2015/03/13 Javascript
Javascript oop设计模式 面向对象编程简单实例介绍
2016/12/13 Javascript
使用vue如何构建一个自动建站项目
2018/02/05 Javascript
angularJs select绑定的model取不到值的解决方法
2018/10/08 Javascript
前端js中的事件循环eventloop机制详解
2019/05/15 Javascript
nginx部署多个vue项目的方法示例
2020/09/06 Javascript
[43:32]Winstrike vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
Python标准库之itertools库的使用方法
2017/09/07 Python
python使用pil进行图像处理(等比例压缩、裁剪)实例代码
2017/12/11 Python
python socket网络编程之粘包问题详解
2018/04/28 Python
Django 用户认证组件使用详解
2019/07/23 Python
Python远程开发环境部署与调试过程图解
2019/12/09 Python
关于pytorch中全连接神经网络搭建两种模式详解
2020/01/14 Python
django模板获取list中指定索引的值方式
2020/05/14 Python
python中spy++的使用超详细教程
2021/01/29 Python
梵蒂冈和罗马卡:Omnia Card Pass
2018/02/10 全球购物
信号量和自旋锁的区别?如何选择使用?
2015/09/08 面试题
工业学校毕业生自荐信范文
2014/01/03 职场文书
施工材料员岗位职责
2014/02/12 职场文书
校庆活动策划方案
2014/06/05 职场文书
网站文案策划岗位职责
2015/04/14 职场文书