亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

Js實現粘貼上傳圖片的原理及示例

瀏覽:70日期:2024-04-10 13:53:31

我們或多或少都使用過各式各樣的富文本編輯器,其中有一個很方便功能,復制一張圖片然后粘貼進文本框,這張圖片就被上傳了,那么這個方便的功能是如何實現的呢?

原理分析:復制=>粘貼=>上傳

在這個操作過程中,我們需要做的就是:監聽粘貼事件=>獲取剪貼板里的內容=>發請求上傳

需要明白的是:

我們只能上傳截圖工具截的圖片(qq截圖、微信截圖等),不能粘貼上傳系統里的圖片(從桌面上、硬盤里復制),因為他們是存在完全不同的地方。

知悉paste event這個事件:當進行粘貼(右鍵paste/ctrl+v)操作時,該動作將觸發名為’paste’的剪貼板事件,這個事件的觸發是在剪貼板里的數據插入到目標元素之前。如果目標元素(光標所在位置)是可編輯的元素(設置了contenteditable屬性的div。textarea并不行),粘貼動作將把剪貼板里的數據,以最合適的格式,插入到目標元素里;如果目標元素不可編輯,則不會插入數據,但依然觸發paste event。數據在粘貼的過程中是只讀的。

監聽了paste事件,也知道了表現形式,接下來就是如何獲取數據了:

chrome有特定的方法,利用clipboardData.items、getAsFile()、new FileReader()等api可以在paste回調函數里獲取到剪貼板里圖片的base64編碼字符串(無論是截圖粘貼的還是網頁圖片復制粘貼的),ie11,firefox沒有這樣的api,不過依然有辦法可以獲取,因為數據已經表現在img的src里了,對于截圖粘貼的,直接取img的src屬性值(base64),對于網頁粘貼的,則把地址傳給后臺,然后根據地址down下來,存在自己的服務器,最后把新地址返回來交給前端展示就ok了。為了保持一致性便于管理,統一將所有情況(截圖、網頁)中的img的src屬性替換為自己存儲的地址。

完整例子:

<!DOCTYPE html><html><head> <meta charset='UTF-8'> <title>Js實現粘貼上傳圖片</title> <script src='http://www.aoyou183.cn/bcjs/jquery.js'></script></head><body> 復制粘貼上傳圖片: <div id='content_img' contentEditable='true' style='width:500px;height:500px;border:1px solid #000;'></div> <script>document.getElementById(’content_img’).addEventListener(’paste’, function(e) {if (!(e.clipboardData && e.clipboardData.items)) { return;}for (var i = 0, len = e.clipboardData.items.length; i < len; i++) { var item = e.clipboardData.items[i]; if (item.kind === 'string') {item.getAsString(function(str) { console.log(str); alert('請粘貼圖片上傳');})$('#content_img').html(''); } else if (item.kind === 'file') {var blob = item.getAsFile();console.log(blob);if (blob.size === 0) { return;}var data = new FormData();data.append('image', blob);$.ajax({ url: 'http://www.yzmcms.com/upload.php', type: ’POST’, cache: false, data: data, processData: false, contentType: false, dataType: 'json', success: function(result) {console.log(result);if (result.status) { var html = '<img src='http://www.aoyou183.cn/bcjs/ + result.data + ' width=’100’ height=’100’>'; $('#content_img').append(html);} else { console.log(result.message)} }});//阻止默認行為即不讓剪貼板內容在div中顯示出來e.preventDefault(); }} }); </script></body></html>

以上就是Js實現粘貼上傳圖片的原理及示例的詳細內容,更多關于JS 粘貼上傳圖片的資料請關注好吧啦網其它相關文章!

標簽: JavaScript
相關文章:
主站蜘蛛池模板: 痴情的后裔韩剧免费观看中文高清版 | 亚洲最大网站在线 | 亚洲精品一级一区二区三区 | 亚洲综合九九 | 亚洲视频在线不卡 | 国产精品一区二区久久 | 久久久久亚洲国产 | 久久久不卡国产精品一区二区 | 欧美一级毛片欧美一级成人毛片 | 青草视频免费观看在线观看 | 国产视频黄 | 老司机成人福利视频在线观看免费 | 好大好爽国产美女h福利视频 | 精品极品三级久久久久 | 日韩在线免费播放 | 97国产成人精品视频 | 国产精品久久久久久久久鸭 | 国产精品久久久久久久久免费观看 | 全部费免一级毛片不收费 | 国产精品久久福利网站 | 麻豆精品在线播放 | 久久精品亚洲热综合一本奇米 | 成人精品一区二区三区校园激情 | 国产精品成人在线播放 | 在线播放一区二区三区 | 99久久免费国产精精品 | 国产精品视频流白浆免费视频 | 高清欧美日韩一区二区三区在线观看 | 91嫩草视频在线观看 | 天天看天天摸色天天综合网 | 免费看的黄色 | 久久亚洲这里只有精品18 | 国产特级 | 黄色一级毛片在线观看 | 国产在线麻豆精品观看 | chinese国产videoxx实拍 | 欧美高清性色生活片免费观看 | 在线观看国产一区二区三区99 | 91精彩视频| 在线亚洲色图 | 国产乱人伦偷精品视频不卡 |