java實現(xiàn)多圖片上傳功能
本文實例為大家分享了java實現(xiàn)多圖片上傳功能的具體代碼,供大家參考,具體內(nèi)容如下
開發(fā)環(huán)境:jdk1.7,MyEclipse10
框架用的是spring。用到了maven工具(maven的包百度下就可以)。
四步完成,全部復(fù)制改參數(shù)就可以
第一步:先在Spring中對圖片進行限制
<!-- SpringMVC上傳文件時,需要配置MultipartResolver處理器 --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8"/> <!-- 指定所上傳文件的總大小不能超過500KB。注意maxUploadSize屬性的限制不是針對單個文件,而是所有文件的容量之和。 這個的大小是以字節(jié)為單位的,要多大自己算好了再設(shè)置--> <property name="maxUploadSize" value="500000"/> <!-- 最大內(nèi)存大小 (10240)--> <property name="maxInMemorySize" value="40960" /> </bean>
第二步:寫jsp頁面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <script type="text/javascript" src="../js/jquery-1.7.1.min.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>上傳圖片</title> </head> <body> <form action="filesUpload" method="POST" name="xiangmu" id="xiangmu" enctype="multipart/form-data"> <table> <tr> <td>身份證圖片上傳:</td> <td><input type=file name="myfiles" id="doc" onchange="showImage();"> </td> <div id="localImag"> <img id="preview" width=-1 height=-1 style="diplay:none" /> </div> </tr> <tr> <td>公司運營情況:</td> <!-- 為了實現(xiàn)張圖片上傳,上傳框這個name要都一樣 --> <td><input type="file" name="myfiles" id="doc1"></td> <td> </td> </tr> <tr> <td><input type="submit" value="提交" /> </td> </tr> </table> </form> </body> </html>
注意:
多圖上傳,上傳框的name要都一樣,等于發(fā)送了一個MultipartFile[]數(shù)組。
不僅支持上傳圖片,還支持多文件上傳。
form的enctype=“multipart/form-data”,這個是上傳文件必須的。
第三步:如果你要實現(xiàn)頁面展現(xiàn)圖片的功能,就在jsp頁面添加下面的方法:
<script type="text/javascript"> function showImage() { var docObj = document.getElementById("doc"); var imgObjPreview = document.getElementById("preview"); if (docObj.files && docObj.files[0]) { //火狐下,直接設(shè)img屬性 imgObjPreview.style.display = 'block'; imgObjPreview.style.width = '300px'; imgObjPreview.style.height = '120px'; //imgObjPreview.src = docObj.files[0].getAsDataURL(); //火狐7以上版本不能用上面的getAsDataURL()方式獲取,需要一下方式 imgObjPreview.src = window.URL.createObjectURL(docObj.files[0]); } else { //IE下,使用濾鏡 docObj.select(); var imgSrc = document.selection.createRange().text; var localImagId = document.getElementById("localImag"); //必須設(shè)置初始大小 localImagId.style.width = "250px"; localImagId.style.height = "200px"; //圖片異常的捕捉,防止用戶修改后綴來偽造圖片 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; } </script>
注意:這個方法只能上傳一張來顯示,除非你設(shè)置多個div?;蛘撸赫故径鄠€圖片可以找找其他方法。
第四步:后臺接收
@RequestMapping("/filesUpload") //requestParam要寫才知道是前臺的那個數(shù)組 public String filesUpload(@RequestParam("myfiles") MultipartFile[] files, HttpServletRequest request) { List<String> list = new ArrayList<String>(); if (files != null && files.length > 0) { for (int i = 0; i < files.length; i++) { MultipartFile file = files[i]; // 保存文件 list = saveFile(request, file, list); } } //寫著測試,刪了就可以 for (int i = 0; i < list.size(); i++) { System.out.println("集合里面的數(shù)據(jù)" + list.get(i)); } return "index";//跳轉(zhuǎn)的頁面 } private List<String> saveFile(HttpServletRequest request, MultipartFile file, List<String> list) { // 判斷文件是否為空 if (!file.isEmpty()) { try { // 保存的文件路徑(如果用的是Tomcat服務(wù)器,文件會上傳到\\%TOMCAT_HOME%\\webapps\\YourWebProject\\upload\\文件夾中 // ) String filePath = request.getSession().getServletContext() .getRealPath("/") + "upload/" + file.getOriginalFilename(); list.add(file.getOriginalFilename()); File saveDir = new File(filePath); if (!saveDir.getParentFile().exists()) saveDir.getParentFile().mkdirs(); // 轉(zhuǎn)存文件 file.transferTo(saveDir); return list; } catch (Exception e) { e.printStackTrace(); } } return list; }
注意:upload是文件夾,自己新建下再運行,免得出錯。
結(jié)束,全部復(fù)制就可以實現(xiàn)了。
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Eclipse+Java+Swing+Mysql實現(xiàn)電影購票系統(tǒng)(詳細代碼)
這篇文章主要介紹了Eclipse+Java+Swing+Mysql實現(xiàn)電影購票系統(tǒng)并附詳細的代碼詳解,需要的小伙伴可以參考一下2022-01-01springboot整合vue2-uploader實現(xiàn)文件分片上傳、秒傳、斷點續(xù)傳功能
對于大文件的處理,無論是用戶端還是服務(wù)端,如果一次性進行讀取發(fā)送、接收都是不可取,很容易導(dǎo)致內(nèi)存問題,下面這篇文章主要給大家介紹了關(guān)于springboot整合vue2-uploader實現(xiàn)文件分片上傳、秒傳、斷點續(xù)傳功能的相關(guān)資料,需要的朋友可以參考下2023-06-06Java 用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解
這篇文章主要介紹了用Prometheus搭建實時監(jiān)控系統(tǒng)過程詳解之上帝之火,普羅米修斯的崛起,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧2020-07-07springboot接口返回數(shù)據(jù)類型全面解析
這篇文章主要介紹了springboot接口返回數(shù)據(jù)類型問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12