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 相关文章推荐
模拟SQLSERVER的两个函数:dateadd(),datediff()
Oct 09 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
深入PHP数据缓存的使用说明
May 10 PHP
php数组查找函数总结
Nov 18 PHP
PHP读取mssql json数据中文乱码的解决办法
Apr 11 PHP
PHP+JavaScript实现无刷新上传图片
Feb 21 PHP
PHP中时间加减函数strtotime用法分析
Apr 26 PHP
php实现自定义中奖项数和概率的抽奖函数示例
May 26 PHP
ThinkPHP 在阿里云上的nginx.config配置实例详解
Oct 11 PHP
THINKPHP3.2使用soap连接webservice的解决方法
Dec 13 PHP
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
Sep 03 PHP
php实现银联商务公众号+服务窗支付的示例代码
Oct 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
PHP基于DOMDocument解析和生成xml的方法分析
2017/07/17 PHP
实例讲解php实现多线程
2019/01/27 PHP
javascript showModalDialog模态对话框使用说明
2009/12/31 Javascript
将函数的实际参数转换成数组的方法
2010/01/25 Javascript
Js基础学习资料
2010/11/23 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
深入理解javascript原型链和继承
2014/09/23 Javascript
jquery 插件实现瀑布流图片展示实例
2015/04/03 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
ES6生成器用法实例分析
2017/04/10 Javascript
用 js 的 selection range 操作选择区域内容和图片
2017/04/18 Javascript
微信小程序模板(template)使用详解
2018/01/31 Javascript
全站最详细的Vuex教程
2018/04/13 Javascript
微信小程序用户信息encryptedData详解
2018/08/24 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
微信小程序登录对接Django后端实现JWT方式验证登录详解
2019/07/29 Javascript
Javascript中的奇葩知识,你知道吗?
2021/01/25 Javascript
详解微信小程序轨迹回放实现及遇到的坑
2021/02/02 Javascript
Win7上搭建Cocos2d-x 3.1.1开发环境
2014/07/03 Python
高性能web服务器框架Tornado简单实现restful接口及开发实例
2014/07/16 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
python编码最佳实践之总结
2016/02/14 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
python实现音乐播放器 python实现花框音乐盒子
2020/02/25 Python
Glamest意大利:女性在线奢侈品零售店
2019/04/28 全球购物
Harman Audio官方商店:购买JBL、Harman Kardon、Infinity和AKG
2019/12/05 全球购物
New Balance比利时官方网站:购买鞋子和服装
2021/01/15 全球购物
大学毕业感言50字
2014/02/07 职场文书
鲜花方阵解说词
2014/02/13 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
2016年寒假家长评语
2015/10/10 职场文书
2016读书月活动心得体会
2016/01/14 职场文书
学长教您写论文:经验总结
2019/07/09 职场文书
浅谈golang package中init方法的多处定义及运行顺序问题
2021/05/06 Golang
Java 超详细讲解十大排序算法面试无忧
2022/04/08 Java/Android