移動(dòng)端 多張圖片上傳

多張圖片上傳

<!DOCTYPE html>
<html>
<head>
<title>html5移動(dòng)端上傳本地圖片</title>
<meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=no" />
<style type="text/css">
#test div{ width:200px; height:200px; display:inline-block; text-align:center;}
#test div img{ max-width:200px; max-height:200px;}
</style>
</head>
<body>
<input type="file" id="file_input" multiple />
<div id="test"></div>

<script>
window.onload = function(){
    var input = document.getElementById('file_input');
    var result, div;
    if(typeof FileReader === 'undefined'){
        result.innerHTML = "抱歉惊豺,你的瀏覽器不支持 FileReader"; 
        input.setAttribute('disabled','disabled');
    }else{
        input.addEventListener('change', readFile, false);
    }
    
    function readFile(){
        for(var i=0; i<this.files.length; i++){
            if( !input['value'].match(/.jpg|.gif|.png|.bmp/) ){  //判斷上傳文件格式
                return alert('上傳的圖片格式不正確')
            }
            var reader = new FileReader();
            reader.readAsDataURL(this.files[i]);
            reader.onload = function(e){
                result = '![](' + this.result + ')'
                div = document.createElement('div')
                div.innerHTML += result
                document.getElementById('test').appendChild(div)
            }
        }
    }
}
</script>
</body>
</html>

http://www.ruanyifeng.com/blog/2015/07/flex-examples.html
http://www.ruanyifeng.com/blog/2015/07/flex-examples.html
Flex 布局教程:實(shí)例篇

單張圖片上傳

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
        <meta content="yes" name="apple-mobile-web-app-capable">
        <meta content="black" name="apple-mobile-web-app-status-bar-style">
        <meta content="telephone=no" name="format-detection">
        <title>意見(jiàn)反饋</title>
    </head>
    <style>
        body{
    background: #ccc;
}
.wrapper{
    height:700px;
    background:#F2F3F4;
    width:540px;
    margin:0 auto;
    overflow:hidden;
}
input[type="file"]{
    opacity: 0;
    position:absolute;
    width:100%; 
    height: 100%;
    border:none
    z-index:1;
    left:0;
    cursor:pointer;
}
.photo-container{
    padding:4% 3% 2% 3%;
    background: #FFFFFF;
    font-size: 0;
    box-sizing: border-box;
    -webkit-box-sizing: border-box;
}
.pushPhoto{
    width: 20%;
    height: 100px;
    margin:0 2%;
    position: relative;
    border:1px solid #dcdcdc;
    font-size:50px;
    text-align:center;
    line-height:100px;
    
}
.pushPhoto>img{
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    width:0%;
    height: 0%;
    
}
.close-btn{
    display: none;
    position: absolute;
    right: 0;
    top: 0;
    color: #555;
    font-size: 0.8rem;
    background:#dcdcdc;
    padding: 5%;
    height:20px;
    width:20px;
    line-height:20px;
    z-index: 2;
    cursor:pointer;
}
.pushPhoto{
    background: url(../img/advice_pic_btn.png) no-repeat center center;
    background-size: contain;
}
.top-container{
    padding: 3%;
    position: relative;
    background: #FFFFFF;
}

.top-container:after,.top-container:before{
    content: "";
    position: absolute;
    width: 200%;
    height: 0;
    left: -100%;
    border-bottom: 1px solid #DCDCDC;
    z-index: 1;
}
.top-container:before{
    top: 0;
}
.top-container:after{
    top: 100%;
}
.top-container textarea{
    width: 100%;
    height: 10rem;
    resize: none;
    outline: none;
    font-size: 18px;
    border: none;
    overflow: scroll;
}
.photo-box{
    background: #DFE1EF;
}
.photo-container>div{
    display: inline-block;
}
.line-container{
    background: #FFFFFF;
    margin: 8% 0;
    padding: 3%;
}
.line-container>input{
    border:none;
    width: 90%;
    font-size: 18px;
}
.btn{
    border:none;
    display: block;
    width: 95%;
    margin:0% auto;
    margin-top: 9%;
    background: #368CFC;
    color: #FFFFFF;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    padding: 3% 0;
    font-size: 20px;
outline:none;
}
.btn:active{
    background: #88bcff;
}

.photo-container .photo-tips{
    display: block;
    width: 20%;
    margin:0 2.5%;
    text-align: center;
    font-size: 1.36rem;
    color: #555;
    padding:1% 0;
}

    </style>
    <body>
        <div class="wrapper">
            <form id="fm_feedBack" enctype="multipart/form-data" method="post">
                <div class="top-container">
                <textarea name="content" id="adviceContent" name="" rows="" cols="" placeholder="把你使用過(guò)程的感受圃泡、意見(jiàn)告訴我們吧普舆,我們會(huì)努力改進(jìn)的异袄!"></textarea>
            </div>
            <div class="photo-container">
                <div class="pushPhoto"  style="position: relative;">
                +
                    <span class="close-btn" onclick="delImg(this)">X</span>
                    <img />
                    <input name="adviceImga" type="file" accept="image/*"  value="+" capture="camera"  onchange="imgPreview(this)">
                </div>
                <span class="photo-tips">上傳截圖</span>
            </div>
            <div class="line-container">
                <input type="tel" name="phoneNo" id="contactMethod" value="" placeholder="請(qǐng)?zhí)顚?xiě)您的聯(lián)系方式"/>
            </div>
            <button type="button" class="btn" onclick="submitAddAdvice()">提交反饋</button>
            </form>
        </div>
    </body>
 <script type="text/javascript" charset="utf-8" src="https://code.jquery.com/jquery-2.2.4.js"></script>
<script>
    //上傳圖片
var pushPhotoLength = 4;
//圖片上傳框
var txt = '<div class="pushPhoto"  style="position: relative;">+<span class="close-btn" onclick="delImg(this)">X</span><img /><input type="file" accept="image/*"  value="+" capture="camera"  onchange="imgPreview(this)"></div>';
var data = {"result":"意見(jiàn)提交成功","resultCode":1};
    function imgPreview(fileDom){
        //判斷是否支持FileReader
        if (window.FileReader) {
            var reader = new FileReader();
        } else {
            alert("您的設(shè)備不支持圖片預(yù)覽功能性誉,如需該功能請(qǐng)升級(jí)您的設(shè)備缴允!");
        }
        //獲取文件
        var file = fileDom.files[0];
        var imageType = /^image\//;
        //是否是圖片
        if (!imageType.test(file.type)) {
            alert("請(qǐng)選擇圖片米同!");
            return;
        }
        //讀取完成
        reader.onload = function(e) {
            //獲取圖片dom
            var img = $(fileDom).prev();
            var closeBtn = $(img).prev();
                var pushPhoto = $(".pushPhoto");
            $(img).attr("src",e.target.result);
             $(img).css({
                "width":"100%",
                "height":"100%"
             })
            closeBtn.show();
            if(pushPhoto.length != 4){
                    $(fileDom).parent().after(txt);
            }else{
                    pushPhotoLength = 0;
            }
        };
        reader.readAsDataURL(file);
    }
//刪除上傳的圖片

function delImg(obj){
    var pushPhoto = $(".pushPhoto");
    if(pushPhoto.length == 4 && pushPhotoLength == 0){
        $(obj).parent().remove();
        pushPhoto = $(".pushPhoto");
        $(pushPhoto[2]).after(txt);
        pushPhotoLength = $(".pushPhoto").length;
    }else if(pushPhoto.length == 1){
        $(obj).hide();
        $(obj).next("img").css("height","0");
    }else{
        $(obj).parent().remove();
    }
}

//提交反饋
function submitAddAdvice(){
    var phoneNo = $("#contactMethod").val();
    var content = $("#adviceContent").val();
    if(content =="" || content == null || content == undefined){
        alert("請(qǐng)您先填寫(xiě)反饋意見(jiàn)");
        return false;
    }else if(phoneNo =="" || phoneNo == null || phoneNo == undefined){
        alert("請(qǐng)您先填寫(xiě)聯(lián)系方式");
        return false;
    }else{
       if(data.resultCode==1){
          alert(data.result);
       }
    }
}

</script>

</html>




http://yesnbst.com/Arts/detail/artId/167使用AJAX上傳圖片至服務(wù)器的方法

<form action="#" id="testForm" method="post"  enctype="multipart/form-data">
    <input type="file" id="files" name="photo">
    <button type="button" id="btn">確定</button>
</form>

$("#btn").on("click", function(){
    var formData = new FormData($( "testForm" )[0]);     // 使用FormData對(duì)象進(jìn)行上傳
    formData.append('photo',$("#files")[0].files[0]);     
    $.ajax({  
        url: '{:U("Index/uploader")}' ,      // 服務(wù)器地址
        type: 'POST',  
        data: formData,      // 上傳的對(duì)象
        dataType:'json',
        async: false,  
        cache: false,  
        contentType: false,  
        processData: false,  
        success: function (response) {  
                console.log(response);
        },  
    });     
})


原文地址:
http://yesnbst.com/Arts/detail/artId/167使用AJAX上傳圖片至服務(wù)器的方法
http://www.qdfuns.com/notes/35528/603e005101b744ea58e52292449dbccd.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末翅楼,一起剝皮案震驚了整個(gè)濱河市乎赴,隨后出現(xiàn)的幾起案子忍法,更是在濱河造成了極大的恐慌潮尝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饿序,死亡現(xiàn)場(chǎng)離奇詭異勉失,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)原探,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)乱凿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人咽弦,你說(shuō)我怎么就攤上這事徒蟆。” “怎么了型型?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,936評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵段审,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我输莺,道長(zhǎng)戚哎,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,427評(píng)論 1 283
  • 正文 為了忘掉前任嫂用,我火速辦了婚禮型凳,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘嘱函。我一直安慰自己甘畅,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布往弓。 她就那樣靜靜地躺著疏唾,像睡著了一般。 火紅的嫁衣襯著肌膚如雪函似。 梳的紋絲不亂的頭發(fā)上槐脏,一...
    開(kāi)封第一講書(shū)人閱讀 49,785評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音撇寞,去河邊找鬼顿天。 笑死,一個(gè)胖子當(dāng)著我的面吹牛蔑担,可吹牛的內(nèi)容都是我干的牌废。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼啤握,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鸟缕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,696評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤懂从,失蹤者是張志新(化名)和其女友劉穎授段,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體番甩,經(jīng)...
    沈念sama閱讀 44,141評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡畴蒲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了对室。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,625評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咖祭,死狀恐怖掩宜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情么翰,我是刑警寧澤牺汤,帶...
    沈念sama閱讀 34,291評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站浩嫌,受9級(jí)特大地震影響檐迟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜码耐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評(píng)論 3 312
  • 文/蒙蒙 一追迟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧骚腥,春花似錦敦间、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,741評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至契沫,卻和暖如春带猴,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背懈万。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工拴清, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人钞速。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓贷掖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親渴语。 傳聞我的和親對(duì)象是個(gè)殘疾皇子苹威,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 大部分的后端會(huì)很很鄙視前端。我也不知道為什么驾凶,可能大部分人都會(huì)覺(jué)得腳本語(yǔ)言根本不算語(yǔ)言牙甫。 大多人 會(huì)叫我們切圖仔掷酗,...
    小黑的眼閱讀 3,317評(píng)論 0 15
  • Jean Yang 文 #原創(chuàng)#寫(xiě)作#攝影 網(wǎng)路上很多以影像為主的圖片,在人人都是攝影師的年代里窟哺,要把影像圖片的類(lèi)...
    JeanYangPhoto閱讀 1,691評(píng)論 3 6
  • TensorFlow等AI工具包的出現(xiàn)且轨,讓程序員不掌握原理也能迅速學(xué)會(huì)機(jī)器學(xué)習(xí)或人工智能技術(shù)的使用浮声。 我曾經(jīng)用Te...
    肆虐的悲傷閱讀 1,009評(píng)論 0 0
  • 經(jīng)朋友和百度之后,我找了米蘭.昆德拉的「不能承受的生命之輕」旋奢,這本書(shū)的寫(xiě)作手法獨(dú)特新穎泳挥,以作者為第一訴說(shuō)人,向讀者...
    小貓coco閱讀 169評(píng)論 0 4