1. 程式人生 > >移動端圖片上傳預覽

移動端圖片上傳預覽

效果:



基本操作:

(1)上傳:

        點選圖示上傳預覽;

(2)刪除:

      點選右上角編輯;

     然後選擇要刪除的圖片;

難點:

        一個檔案域只能上傳一張圖片,input標籤d的multiple=“multiple”屬性在ios端中可以實現圖片的多張選擇(是否能多張傳沒有測試,但在本程式碼中單次也是能預覽單張),但是安卓端中multiple無效(安卓手機調出新手機相簿後點擊圖片直接上傳),

html程式碼:

<form action="#" method="post" enctype="multipart/form-data">
<div id="ad">
    <div class="request_title"><span style="float:left;height:2rem;width:40%">圖片說明(可選)</span><span class="show" id="dd">編輯</span><span id="over" class="hidden">完成</span></div>
    <div class="request_select2" id="ss">
        <div id="pink">
            <div class="dd"><input type="file" name="file1" id="ad_doc1" accept="image/*" onchange="cnm(this)"><span>+</span></div>  &lt;!&ndash;按鈕&ndash;&gt;
        </div>
    </div>
</div>
<button type="submit" class="request_btn" style="width:98%">提交</button></form>

css程式碼:

js程式碼:

mui.previewImage();

document.getElementById("dd").onclick=function(){
    var tt=document.getElementsByClassName("yy");
    if(tt.length>0){

        var a1=document.getElementById("pink");
        var a2=a1.getElementsByClassName("yy");

        for( var i=0;i<a2.length;i++){
            a2[i].getElementsByTagName("div")[0].className="cel1";

        }
        document.getElementById("dd").className="hidden";
        document.getElementById("over").className="show";
        document.getElementsByClassName("dd")[0].className="dd hidden";
    };


    document.getElementById("over").onclick=function() {

        var a1 = document.getElementById("pink");
        var a2 = a1.getElementsByClassName("yy");

        for (var i = 0; i < a2.length; i++) {
            a2[i].getElementsByTagName("div")[0].className = "cel";

        }
        document.getElementById("dd").className = "show";
        document.getElementById("over").className = "hidden";

        document.getElementsByClassName("dd")[0].className = "dd";
    }


};




function removeOption(obj){
    obj.parentNode.parentNode.previousElementSibling.remove();//previousElementSibling是獲取上一個兄弟結點
    obj.parentNode.parentNode.remove();

}
function cnm(obj){
    var ab=document.getElementById("pink");
    var cd=ab.getElementsByClassName("yy");
    if(cd.length<3){
        var a1=obj.getAttribute("name");
        var a2=a1.substr(a1.length-1,1);//獲取名字的最後一位字元,(start,)
        var a3=parseInt(a2);//將字串轉換成數字型別
        obj.parentNode.className="hidden";
        var a4=a3+1;
        var ad_doc="ad_doc"+a4;
        var file="file"+a4;
        var old_doc="ad_doc"+a3;
        var ad_img="ad_img"+a3;
        var para=document.createElement("div");
        para.className="dd";
        para.innerHTML="<input  type='file' name='"+file+"' id='"+ad_doc+"'  accept='image/*' onchange='cnm(this)' /><span >+</span>";
        obj.parentNode.parentNode.appendChild(para);
        var para2=document.createElement("div");
        para2.className="yy";
        para2.innerHTML=" <img class='hidden ci'  id='"+ad_img+"' src='./images/5.jpg' width='64' height='64'  style='margin-right:0.5rem' data-preview-src='' data-preview-group='1'/><div class='hidden cel' ><span class='ch'  onclick='removeOption(this)' >+</span></div></div>";

        document.getElementById("pink").insertBefore(para2,document.getElementById("pink").lastChild);
        setImagePreview(old_doc,ad_img,'64','64');
    }else{
        alert("只能上傳三張圖片!");
    }
}
//下面用於圖片上傳預覽功能
function setImagePreview(doc,preview,width,height) {
    //input
    var docObj = document.getElementById(doc);
    //img
    var imgObjPreview = document.getElementById(preview);
    //div
    var divs = document.getElementById("localImag");
    if (docObj.files && docObj.files[0]) {
        //火狐下,直接設img屬性
        imgObjPreview.style.display = 'block';
        imgObjPreview.style.width = width+'px';
        imgObjPreview.style.height = height+'px';
        //imgObjPreview.src = docObj.files[0].getAsDataURL();
        //火狐7以上版本不能用上面的getAsDataURL()方式獲取,需要一下方式
        imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]);
        imgObjPreview.className="";
        imgObjPreview.className="show ci";
    } else {
        //IE下,使用濾鏡
        docObj.select();
        var imgSrc = document.selection.createRange().text;
        var localImagId = document.getElementById("localImag");
        //必須設定初始大小
        localImagId.style.width = width+"px";
        localImagId.style.height = height+"px";
        //圖片異常的捕捉,防止使用者修改後綴來偽造圖片
        try {
            localImagId.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale)";
            localImagId.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgSrc;
        } catch(e) {
            alert("您上傳的圖片格式不正確,請重新選擇!");
            return false;
        }
        imgObjPreview.style.display = 'none';
        document.selection.empty();
    }
    return true;
}

相關推薦

移動圖片

效果: 基本操作: (1)上傳:         點選圖示上傳預覽; (2)刪除:       點選右上角編輯;      然後選擇要刪除的圖片; 難點:         一個檔案域只能上傳一張圖片,input標籤d的multiple=“multiple”屬性在i

HTML5 手機圖片

1、html頁面 <div class="addFile"> <p class="company">資料上傳</p> <div class="photoes getoutinput"> <div class="uplist">

圖片實現以及移動web多檔案

注:先寫下兩個點,等空下來再上程式碼~ 1.多圖片上傳預覽,且可對圖片進行編輯 可對 input[type=file] 物件獲取 obj.files 獲取 FileList,但為只讀模式,不可寫。

圖片

bject too sca 圖片格式 else 遍歷 bsp turn filters Js腳本頁面 <!doctype html> <html> <head> <meta charset="utf-8"> <titl

圖片移動圖片旋轉、壓縮的解決方案

dex adding .com pad 移動 side www shu add 移動端圖片上傳旋轉、壓縮的解決方案 來源 知乎 作者 林鑫 工作上有手機上傳準考證等圖片的功能,這個是非常必要的,作者寫的很全面,就直接記錄這個地址了 還有一篇 文件的上傳、下載

二十七、單張圖片

第一部分 ajax 效果 document 圖片 pos itl .data title html部分 <div class="new-store-phone"> <span class="phone-title">營業執照&nbsp;

簡單的做一個圖片(web前端)

chrom 預覽 web前端 console fine 分享圖片 fire title right 轉載:點擊查看原文 在做web項目很多的時候圖片都是避免不了的,所以操作圖片就成了一個相對比較棘手的問題,其實也不是說很麻煩,只是說上傳然後直接預覽的過

html5實現圖片

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type="text/css"> #te

JS原生實現本地圖片

執行方式如下: $("input").change(function() { var config = { imgWrapWidth: 300, //px imgWrapHeight: 200, //px imgMaxWidth: "100%", im

vue自定義圖片功能

//vue裡面的HTML程式碼 <div id="modificationPreview">         <input type="file" accept="image/*" @change="changeFile" id="m

圖片(可根據自己得需要封裝元件)

話不多說,先上圖   實現簡單得多行多圖片上傳,可以選擇其中任意一個圖片當作你需要得預設圖傳到後臺,然後一次性提交 圖片上傳重要得也就兩個屬性:new FormData()和new FileReader() 程式碼: <template> <

js圖片功能相容實現

<html> <head> <title>js圖片上傳預覽</title> <script> function PreviewImage(imgFile) { var filextension=imgFile.value.subst

基於vue的移動圖片

1、上傳效果(含新增和刪除設計圖):        達到上傳上限,隱藏上傳圖示,刪除後,數量小於上限會自動顯示。 2、html程式碼 //使用前,先把元件引入 <updatefile :multiple="true" :max=6 :list="imgLis

PHPCMS V9手機移動圖片(PHPCMS V9前臺使用layui的元件代替預設的SWFupload圖片

預設phpcms的上傳 圖片使用的是swfupload,導致手機移動端上傳圖片無法使用。這裡我們使用layui的上傳元件來使其支援手機移動端圖片上傳,效果圖如下:   實現步驟: 一、 開啟phpcms

圖片的簡單程式碼

效果如下圖 程式碼如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=dev

springmvc圖片、jquery 圖片

寬為限 緊用功 功夫到 滯塞通 簡介 專案需求,需要做圖片上傳功能,圖片上傳肯定得給個預覽嘛,然後就找了下面這個方案 ajaxfileupload外掛上傳 ajaxfileupload.js網上傳了好幾個版本,選擇自己可以使用的就好了。這個外掛是N多

jquery.fileupload.js外掛使用初探--多圖片

 一、前臺程式碼: <!DOCTYPE html> <html> <head> <title>jquery.fileupload.js使用測試</title> <script src="jq

前端js實現圖片

前端js實現圖片上傳 前端js實現圖片上傳的原理是通過input標籤的type=file屬性將input標籤定義為上傳檔案,對input進行onchange事件的監聽,當input的value值改變時代表使用者已經上傳了圖片,而input的value值就是使用者上傳的圖片的相對路徑,new

Jcrop外掛+Canvas實現圖片+圖片裁剪

前言 想實現一個功能:使用者點選上傳按鈕,選擇圖片後。圖片顯示在一個彈出框上,並可以對圖片進行裁剪。裁剪後的圖片顯示在頁面上。提交表單即可上傳圖片。 遇到問題 瀏覽器的安全設定不讓使用者獲取上傳的圖片路徑,實際獲取的是c:\fakepath\a.jp

使用base64進行移動圖片

之前搞微信上的圖片上傳,想直接通過介面上傳到自己的圖片伺服器,發現移動端瀏覽器上挺多坑的,使用最簡單的form-data形式好像不成。研究了一下,發現base64格式通用性較強。 base64編碼 base64是一種使用可列印字元來描述二進位制資料的方法