[代码全屏查看]-利用ctrl+v实现粘贴截图完成上传功能

http://www.oschina.net/code/piece_full?code=47893

<?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>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值