文件上傳

頁面:

<div showCollapseButton="true">
        <h1 id="h1" style="margin-left:10px;">媒體信息</h1>
        <div id="toolbar1" class="mini-toolbar" style="padding:2px;">
           <form id="form_1" style="margin-right: 20px; float: left;" action="" enctype="multipart/form-data"       method="post">
              ![](?)
              <input name="file_1" id="file_1" style="position: absolute; opacity: 0;" onchange="getImgURL(this,1)" type="file" size="1" accept="image/*">
              <a class="mini-button" id="img_1" style="text-align: center; display: block;" plain="true" iconcls="icon-folderopen">正面像</a>
           </form>
        </div>
  </div>

1:包含文件的form需要聲明enctype="multipart/form-data"
2:style="display: block;"义钉,block表示獨占一個塊級元素盯荤,獨占一行
3:將file標簽設置為透明: style="position: absolute; opacity: 0;"
覆蓋到a標簽上,點擊a其實就是在點擊file(原因是如果給a標簽加入點擊事件觸發(fā)文件選擇镊折,form表單提交的時候獲取不到文件(頁面會報錯沒有權限)胯府,取到file中的文件必須時候file標簽點擊事件觸發(fā))
4: accept="image/*",該屬性是限制文件上傳類別的(H5以下不支持)所以加入:

function getImgURL(node,coid){
            var isIE = /msie/i.test(navigator.userAgent) && !window.opera; 
            var filetypes =[".jpg",".png"]; 
            var filepath = node.value;   
            var filemaxsize = 1024*2;//2M   
            if(filepath){   
                var isnext = false;   
                var fileend = filepath.substring(filepath.indexOf("."));   
                if(filetypes && filetypes.length>0){   
                    for(var i =0; i<filetypes.length;i++){   
                        if(filetypes[i]==fileend){   
                            isnext = true;   
                        break;   
                        }   
                    }   
                }   
                if(!isnext){   
                    alert("不接受此文件類型恨胚!");   
                    node.value ="";   
                    return false;   
                }   
            }else{   
                return false;   
            }
            if (isIE && !node.files) {   
                    var filePath = node.value;   
                    var fileSystem = new ActiveXObject("Scripting.FileSystemObject");   
                    if(!fileSystem.FileExists(filePath)){   
                        alert("附件不存在骂因,請重新輸入!");   
                        return false;   
                    }   
                    var file = fileSystem.GetFile (filePath);   
                    fileSize = file.Size;   
            } else {   
                fileSize = node.files[0].size;   
            }   
                  
            var size = fileSize / 1024;   
            if(size>filemaxsize){   
                alert("附件大小不能大于"+filemaxsize/1024+"M赃泡!");   
                node.value ="";   
                return false;   
            }   
            if(size<=0){   
                alert("附件大小不能為0M寒波!");   
                node.value ="";   
                return false;   
            }
        }

5:帶文件的form表單提交

                form.attr('action','uploadImg.action');
                form.attr('method','post');
                form.ajaxSubmit({
                    url:"uploadImg.action",
                    type : 'post',  
                    dataType : 'text', 
                    success:function(data){
                        img.attr("src", "..\\"+data+"?"+new Date().getTime());
                        return false;  //阻塞表單自動提交
                    },
                    error : function(data) {  
                        alert("error:" + data.responseText); 
                        return false;  //阻塞表單自動提交
                    }  
                });

6:img.attr("src", "..\"+data+"?"+new Date().getTime()); 在src地址中加時間戳乘盼,防止頁面圖片不刷新或者不顯示
7:html5,對于選中的照片可以直接回顯

    //html5的照片回顯
             var simpleFile = file.files[0];
             if(!/image\/\w+/.test(simpleFile.type)) {
                 alert("請確保文件類型為圖像類型");
                 return false;
             }
             var reader = new FileReader();
             // 將文件以Data URL形式進行讀入頁面
             reader.readAsDataURL(simpleFile);
             reader.onload = function(e){
                 console.log(this.result);
                 img.attr("src",this.result);
             } 

8:后臺

       @RequestMapping("/uploadImg.action")
    @ResponseBody
     /**
     * 上傳數(shù)據(jù)及保存文件
     */
    public String uploadImg(HttpServletRequest request,
        HttpServletResponse response) throws ServletException, IOException {
        String reString="";
        // 檢測是否為多媒體上傳
        if (!ServletFileUpload.isMultipartContent(request)) {
            // 如果不是則停止
            PrintWriter writer = response.getWriter();
            writer.println("Error: 表單必須包含 enctype=multipart/form-data");
            writer.flush();
            return reString;
        }
               String serverPath="文件上傳保存路徑"俄烁;
        MultipartHttpServletRequest multipartRequest  =  (MultipartHttpServletRequest) request;  
        
         // 如果目錄不存在則創(chuàng)建
        File uploadDir = new File(serverPath);
        if (!uploadDir.exists()) {
            uploadDir.mkdirs();//mkdirs蹦肴,創(chuàng)建文件或者文件夾,如果目標不存在一起創(chuàng)建
        }
        
        MultipartFile file1 = multipartRequest.getFile("file_"+coid);
        String fileName = file1.getOriginalFilename();
        int lastLength = fileName.lastIndexOf("."); 
        String fileType = fileName.substring(lastLength);              //獲取上傳圖片的類型 
        //File.separator 在Windows下的路徑分隔符和Linux下的路徑分隔符是不一樣的,這個方法可以自動獲取
        String filePath = serverPath + File.separator + "文件的名字"+fileType;
        // 在控制臺輸出文件的上傳路徑
        System.out.println(filePath);
        //上傳文件
        try{
             File storeFile = new File(filePath);
             file1.transferTo(storeFile);//spring mvc提供的文件上傳操作
             // Map<String,MultipartFile> fileMap  =multipartRequest.getFileMap();//多文件上傳時使用
             reString=xdFilePath+ File.separator + coid+fileType;;
             request.setAttribute("message","文件上傳成功!");
        }catch (Exception ex) {
            request.setAttribute("message",
                    "錯誤信息: " + ex.getMessage());
        }
        return reString;
    }
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末猴娩,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子勺阐,更是在濱河造成了極大的恐慌卷中,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,884評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渊抽,死亡現(xiàn)場離奇詭異蟆豫,居然都是意外死亡,警方通過查閱死者的電腦和手機懒闷,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,347評論 3 385
  • 文/潘曉璐 我一進店門十减,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人愤估,你說我怎么就攤上這事帮辟。” “怎么了玩焰?”我有些...
    開封第一講書人閱讀 157,435評論 0 348
  • 文/不壞的土叔 我叫張陵由驹,是天一觀的道長。 經(jīng)常有香客問我昔园,道長蔓榄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,509評論 1 284
  • 正文 為了忘掉前任默刚,我火速辦了婚禮甥郑,結果婚禮上,老公的妹妹穿的比我還像新娘荤西。我一直安慰自己澜搅,他們只是感情好,可當我...
    茶點故事閱讀 65,611評論 6 386
  • 文/花漫 我一把揭開白布邪锌。 她就那樣靜靜地躺著店展,像睡著了一般。 火紅的嫁衣襯著肌膚如雪秃流。 梳的紋絲不亂的頭發(fā)上赂蕴,一...
    開封第一講書人閱讀 49,837評論 1 290
  • 那天,我揣著相機與錄音舶胀,去河邊找鬼概说。 笑死碧注,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的糖赔。 我是一名探鬼主播萍丐,決...
    沈念sama閱讀 38,987評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼放典!你這毒婦竟也來了逝变?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,730評論 0 267
  • 序言:老撾萬榮一對情侶失蹤奋构,失蹤者是張志新(化名)和其女友劉穎壳影,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弥臼,經(jīng)...
    沈念sama閱讀 44,194評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡宴咧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,525評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了径缅。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掺栅。...
    茶點故事閱讀 38,664評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖纳猪,靈堂內(nèi)的尸體忽然破棺而出氧卧,到底是詐尸還是另有隱情,我是刑警寧澤氏堤,帶...
    沈念sama閱讀 34,334評論 4 330
  • 正文 年R本政府宣布假抄,位于F島的核電站,受9級特大地震影響丽猬,放射性物質(zhì)發(fā)生泄漏宿饱。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,944評論 3 313
  • 文/蒙蒙 一脚祟、第九天 我趴在偏房一處隱蔽的房頂上張望谬以。 院中可真熱鬧,春花似錦由桌、人聲如沸为黎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,764評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铭乾。三九已至,卻和暖如春娃循,著一層夾襖步出監(jiān)牢的瞬間炕檩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,997評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留笛质,地道東北人泉沾。 一個月前我還...
    沈念sama閱讀 46,389評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像妇押,于是被迫代替她去往敵國和親跷究。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,554評論 2 349

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

  • 本文包括:1敲霍、文件上傳概述2俊马、利用 Commons-fileupload 組件實現(xiàn)文件上傳3、核心API——Dis...
    廖少少閱讀 12,531評論 5 91
  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案肩杈? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 13,737評論 1 92
  • 上傳文件已經(jīng)是個已經(jīng)成熟的前端技術柴我,目前開源的拿來即用的前端上傳插件也比較多,諸如:Web Uploader锋恬、JS...
    清曉凝露閱讀 11,407評論 0 22
  • 最近項目需要使用 Angular,對于初學 Angular 的我只能硬著頭皮上了编丘,項目中有一個需求是文件上傳与学,磕磕...
    雖萬萬人吾往矣閱讀 18,252評論 3 20
  • SpringMVC的文件上傳 本篇文章主要解決兩個問題 怎么使用springMVC 框架上傳文件 怎么在服務器上的...
    醉里挑燈A閱讀 1,471評論 0 8