移动端 多张图片上传

多张图片上传

<!DOCTYPE html>
<html>
<head>
<title>html5移动端上传本地图片</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 布局教程:实例篇

单张图片上传

<!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>意见反馈</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="把你使用过程的感受、意见告诉我们吧,我们会努力改进的!"></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="请填写您的联系方式"/>
            </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":"意见提交成功","resultCode":1};
    function imgPreview(fileDom){
        //判断是否支持FileReader
        if (window.FileReader) {
            var reader = new FileReader();
        } else {
            alert("您的设备不支持图片预览功能,如需该功能请升级您的设备!");
        }
        //获取文件
        var file = fileDom.files[0];
        var imageType = /^image\//;
        //是否是图片
        if (!imageType.test(file.type)) {
            alert("请选择图片!");
            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("请您先填写反馈意见");
        return false;
    }else if(phoneNo =="" || phoneNo == null || phoneNo == undefined){
        alert("请您先填写联系方式");
        return false;
    }else{
       if(data.resultCode==1){
          alert(data.result);
       }
    }
}

</script>

</html>




http://yesnbst.com/Arts/detail/artId/167使用AJAX上传图片至服务器的方法

<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对象进行上传
    formData.append('photo',$("#files")[0].files[0]);     
    $.ajax({  
        url: '{:U("Index/uploader")}' ,      // 服务器地址
        type: 'POST',  
        data: formData,      // 上传的对象
        dataType:'json',
        async: false,  
        cache: false,  
        contentType: false,  
        processData: false,  
        success: function (response) {  
                console.log(response);
        },  
    });     
})


原文地址:
http://yesnbst.com/Arts/detail/artId/167使用AJAX上传图片至服务器的方法
http://www.qdfuns.com/notes/35528/603e005101b744ea58e52292449dbccd.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容