您好,登錄后才能下訂單哦!
這篇文章主要介紹jsp上傳顯示圖片的方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
之前做過一個項目,有一個功能是圖片上傳并且展示圖片,嘗試過其他的方法,但會有一個問題,那就是在IE8上圖片并不能下常展示,
所以便用以下方法來上傳圖片,很好的解決了此問題,步驟如下:
1.上傳圖片頁面index.jsp
<%@ page language="java" import="java.util.*,java.net.URLDecoder" pageEncoding="utf-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>"> <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <script type="text/javascript" src="js/jquery-1.8.0.min.js"></script> <script type="text/javascript" src="js/ajaxupload.js"></script> <!-- <link rel="stylesheet" type="text/css" href="styles.css"> --> </head> <body> <script type="text/javascript"> $(function(){ //上傳圖片 new AjaxUpload('#addLabProdPic', { action: 'upload.jsp', name: 'picFile', responseType: 'json', onSubmit : function(file , ext){ if (ext && /^(jpg|png|bmp)$/.test(ext.toLowerCase())){ this.setData({ 'picName': file }); } else { alert("請上傳格式為 jpg|png|bmp 的圖片!"); return false; } }, onComplete : function(file,response){ if(response.error) { alert(response.error); return; } //alert(response.picUrl); show(response.picUrl); } }); }) function show(path){ if(document.all)//IE { //path = "D:/upload/11.png"; document.getElementById("imgPreview").innerHTML=""; document.getElementById("imgPreview").style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled='true',sizingMethod='scale',src=\"" + path + "\")";//使用濾鏡效果www.2cto.com } else//FF { //path = "D:/upload/11.png"; //document.getElementById("imgPreview").innerHTML = "<img id='img1' width='120px' height='100px' src='"+path+"'/>"; document.getElementById("img1").src = path; } }; </script> <h2>Ajax文件上傳例子,選擇圖片后立即上傳,無需點擊上傳按鈕</h2> <button id="addLabProdPic">選擇圖片</button> <br> <div id="imgPreview" style='width:120px; height:100px;'> <img id="viewImg" width="200px" height="200px;"> </div> </body> </html>
2.上傳圖片后臺處理業務upload.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <%@page import="java.io.PrintWriter,java.io.File,org.apache.commons.fileupload.FileItem,org.apache.commons.fileupload.disk.DiskFileItemFactory,org.apache.commons.fileupload.servlet.ServletFileUpload" %> <% System.out.println("///////"); // dfif對象為解析器提供解析時的缺省的一些配置 DiskFileItemFactory dfif = new DiskFileItemFactory(); // 創建解析器 ServletFileUpload sfu = new ServletFileUpload(dfif); sfu.setHeaderEncoding("utf-8");//解決了上傳圖片如果為中文就是亂碼問題 String loadpath="D:/upload";//上傳文件存放目錄(此路徑是將上傳的文件放在本地的硬盤上) String filName=""; try{ // 開始解析(分析InputStream) // 每一個表單域當中的數據都會 // 封裝到一個對應的FileItem對象上。 List<FileItem> items = sfu.parseRequest(request); for (int i = 0; i < items.size(); i++) { FileItem item = items.get(i); // 要區分是上傳文件域還是普通的表單域 if (item.isFormField()) { // 普通表單域 String name = item.getString(); filName=name; System.out.println("name:" + name); } else { // 上傳文件域 // ServletContext:servlet上下文對象。 ServletContext sctx = getServletContext(); // 獲得原始的文件名 String filename = item.getName(); File loadFolder = new File(loadpath); if (!loadFolder.exists()) { loadFolder.mkdirs(); } File file = new File(loadFolder + "\\" + filename); item.write(file); } } String result=loadpath+"/"+filName; PrintWriter writer = response.getWriter(); writer.print("{"); //writer.print("msg:\"文件大小:"+item.getSize()+",文件名:"+filename+"\""); writer.print("picUrl:\"" + result + "\""); writer.print("}"); writer.close(); }catch(Exception e){ e.printStackTrace(); } %>
3.所需主要文件ajaxupload.js
這部分缺失,導致交互出現問題,所以需要大家摸索了,加油。
以上是jsp上傳顯示圖片的方法的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。