jQuery图片上传前先在本地预览(不经过后端处理)
生活随笔
收集整理的這篇文章主要介紹了
jQuery图片上传前先在本地预览(不经过后端处理)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
前段時間遇到一個問題,前端想實現圖片上傳預覽(不經過后端PHP或JAVA處理),用戶點擊file按鈕上傳文件,點擊確定馬上就能看到預覽的效果,但在實現的時候無論怎樣都取不到file上圖片的真實路徑,得到的反而是C:\fakepath\a.jpg,這個路徑是錯誤的。百度之后得到說瀏覽器基于保護用戶的相關安全措施,隱藏了上傳的真實路徑,用fakepath代替,當然,調整瀏覽器的相關安全設置可以解決這個問題。但我們不可能讓所有用戶都通過設置瀏覽器的安全設置來進行圖片上傳,這種方法在網絡交互上顯然不現實。
/* *名稱:圖片上傳本地預覽插件 v1.1 *介紹:基于JQUERY擴展,圖片上傳預覽插件 目前兼容瀏覽器(IE 谷歌 火狐) 不支持safari *插件網站:http://keleyi.com/keleyi/phtml/image/16.htm *參數說明: Img:圖片ID; Width:預覽寬度; Height:預覽高度; ImgType:支持文件類型; Callback:選擇文件顯示圖片后回調方法; *使用方法: <div> <img id="ImgPr" width="120" height="120" /></div> <input type="file" id="up" />把需要進行預覽的IMG標簽外 套一個DIV 然后給上傳控件ID給予uploadPreview事件
$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120, ImgType: ["gif", "jpeg", "jpg", "bmp", "png"], Callback: function () { }});實例:
jQuery.fn.extend({uploadPreview: function (opts) {var _self = this,_this = $(this);opts = jQuery.extend({Img: "ImgPr",Width: 100,Height: 100,ImgType: ["gif", "jpeg", "jpg", "bmp", "png"],Callback: function () {}}, opts || {});_self.getObjectURL = function (file) {var url = null;if (window.createObjectURL != undefined) {url = window.createObjectURL(file)} else if (window.URL != undefined) {url = window.URL.createObjectURL(file)} else if (window.webkitURL != undefined) {url = window.webkitURL.createObjectURL(file)}return url};_this.change(function () {if (this.value) {if (!RegExp("\.(" + opts.ImgType.join("|") + ")$", "i").test(this.value.toLowerCase())) {alert("選擇文件錯誤,圖片類型必須是" + opts.ImgType.join(",") + "中的一種");this.value = "";return false} //高版本Jquey使用 if ($.support.leadingWhitespace)if ($.browser.msie) { //低版本jquery中使用的方式try {$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))} catch (e) {var src = "";var obj = $("#" + opts.Img);var div = obj.parent("div")[0];_self.select();if (top != self) {window.parent.document.body.focus()} else {_self.blur()}src = document.selection.createRange().text;document.selection.empty();obj.hide();obj.parent("div").css({'filter': 'progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)','width': opts.Width + 'px','height': opts.Height + 'px'});div.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = src}} else {$("#" + opts.Img).attr('src', _self.getObjectURL(this.files[0]))}opts.Callback()}})} });調用:
$(function () {$("#up").uploadPreview({ Img: "ImgPr", Width: 120, Height: 120 }); });HTML結構:
<div> <img id="ImgPr" width="120" height="120" /> </div> <input type="file" id="up" />?本人發布的插件測試地址:http://www.jq22.com/webqd875
轉載于:https://www.cnblogs.com/tongkaiqiang/p/6780822.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的jQuery图片上传前先在本地预览(不经过后端处理)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Solr实战(二):索引操作
- 下一篇: 服务器-番外篇-搭建samba共享