Javaweb中上传图片,获取相对路径,绝对路径
生活随笔
收集整理的這篇文章主要介紹了
Javaweb中上传图片,获取相对路径,绝对路径
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
標題:Javaweb中上傳圖片,獲取相對路徑,絕對路徑
實際上獲取的是絕對路徑,不過通過瀏覽器查看到的不會是絕對路徑,而是被瀏覽器保護好,給你看到的一個假的路徑,而我們要做的就是獲取圖片的名字即可,人為的添加一個路徑,同時寫入到數據庫中一個相對路徑即可
最后的圖片保存的絕對路徑【不是圖片原來的絕對路徑】,
E:\eclipse\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\itcaststore\productImg\11\1相對路徑【數據庫中使用相對路徑,使得可以在瀏覽器中顯示圖片,而使用絕對路徑,在瀏覽器中顯示不了圖片,只能在eclipse中的內置瀏覽器中顯示圖片】:
/productImg/11/1/fec068b5-afd0-4d45-b31b-0f7cddf4f25b.jpg具體操作:
package cn.itcast.itcaststore.web.servlet.manager; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.fileupload.FileItem; import org.apache.commons.fileupload.FileUploadException; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.apache.commons.io.IOUtils; import cn.itcast.itcaststore.domain.Product; import cn.itcast.itcaststore.exception.AddProductException; import cn.itcast.itcaststore.service.ProductService; import cn.itcast.itcaststore.utils.FileUploadUtils; import cn.itcast.itcaststore.utils.IdUtils; /*** 后臺系統* 用于添加商品的servlet*/ public class AddProductServlet extends HttpServlet {public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {doPost(request, response);}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {// 創建javaBean,將上傳數據封裝.Product p = new Product();Map<String, String> map = new HashMap<String, String>();// 封裝商品idmap.put("id", IdUtils.getUUID());DiskFileItemFactory dfif = new DiskFileItemFactory();// 設置臨時文件存儲位置dfif.setRepository(new File(this.getServletContext().getRealPath("/temp")));// 設置上傳文件緩存大小為10mdfif.setSizeThreshold(1024 * 1024 * 10);// 創建上傳組件ServletFileUpload upload = new ServletFileUpload(dfif);// 處理上傳文件中文亂碼upload.setHeaderEncoding("utf-8");try {// 解析request得到所有的FileItemList<FileItem> items = upload.parseRequest(request);// 遍歷所有FileItemfor (FileItem item : items) {// 判斷當前是否是上傳組件if (item.isFormField()) {// 不是上傳組件String fieldName = item.getFieldName(); // 獲取組件名稱String value = item.getString("utf-8"); // 解決亂碼問題map.put(fieldName, value);} else {// 是上傳組件// 得到上傳文件真實名稱String fileName = item.getName();fileName = FileUploadUtils.subFileName(fileName);// 得到隨機名稱String randomName = FileUploadUtils.generateRandonFileName(fileName);// 得到隨機目錄String randomDir = FileUploadUtils.generateRandomDir(randomName);// 圖片存儲父目錄String imgurl_parent = "/productImg" + randomDir;File parentDir = new File(this.getServletContext().getRealPath(imgurl_parent));// 驗證目錄是否存在,如果不存在,創建出來if (!parentDir.exists()) {parentDir.mkdirs();}String imgurl = imgurl_parent + "/" + randomName;map.put("imgurl", imgurl);IOUtils.copy(item.getInputStream(), new FileOutputStream(new File(parentDir, randomName)));item.delete();}}} catch (FileUploadException e) {e.printStackTrace();}try {// 將數據封裝到javaBean中BeanUtils.populate(p, map);} catch (IllegalAccessException e) {e.printStackTrace();} catch (InvocationTargetException e) {e.printStackTrace();}ProductService service = new ProductService();try {// 調用service完成添加商品操作service.addProduct(p);response.sendRedirect(request.getContextPath()+ "/listProduct");return;} catch (AddProductException e) {e.printStackTrace();response.getWriter().write("添加商品失敗");return;}} } <%@ page language="java" pageEncoding="UTF-8"%> <HTML> <HEAD><meta http-equiv="Content-Language" content="zh-cn"><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><LINK href="${pageContext.request.contextPath}/admin/css/Style.css" type="text/css" rel="stylesheet"> </HEAD> <body><form id="userAction_save_do" name="Form1"action="${pageContext.request.contextPath}/addProduct" method="post"enctype="multipart/form-data"> <table cellSpacing="1" cellPadding="5" width="100%" align="center"bgColor="#eeeeee" style="border: 1px solid #8ba7e3" border="0"><tr><td class="ta_01" align="center" bgColor="#afd1f3" colSpan="4"height="26"><strong><STRONG>添加商品</STRONG> </strong></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">商品名稱:</td><td class="ta_01" bgColor="#ffffff"><input type="text" name="name" class="bg" /></td><td align="center" bgColor="#f5fafe" class="ta_01">商品價格:</td><td class="ta_01" bgColor="#ffffff"><input type="text" name="price" class="bg" /></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">商品數量:</td><td class="ta_01" bgColor="#ffffff"><input type="text" name="pnum" class="bg" /></td><td align="center" bgColor="#f5fafe" class="ta_01">商品類別:</td><td class="ta_01" bgColor="#ffffff"><select name="category" id="category"><option value="" selected="selected">--選擇商品類加--</option><option value="文學">文學</option><option value="生活">生活</option><option value="計算機">計算機</option><option value="外語">外語</option><option value="經營">經營</option><option value="勵志">勵志</option><option value="社科">社科</option><option value="學術">學術</option><option value="少兒">少兒</option><option value="藝術">藝術</option><option value="原版">原版</option><option value="科技">科技</option><option value="考試">考試</option><option value="生活百科">生活百科</option></select></td></tr><tr><td align="center" bgColor="#f5fafe" class="ta_01">商品圖片:</td><td class="ta_01" bgColor="#ffffff" colspan="3"><input type="file" name="upload" size="30" value="" /></td></tr><TR><TD class="ta_01" align="center" bgColor="#f5fafe">商品描述:</TD><TD class="ta_01" bgColor="#ffffff" colSpan="3"><textarea name="description" cols="30" rows="3" style="WIDTH: 96%"></textarea></TD></TR><TR><td align="center" colSpan="4" class="sep1"><imgsrc="${pageContext.request.contextPath}/admin/images/shim.gif"></td></TR><tr><td class="ta_01" style="WIDTH: 100%" align="center"bgColor="#f5fafe" colSpan="4"><input type="submit" class="button_ok" value="確定"> <FONT face="宋體"> </FONT><input type="reset" value="重置" class="button_cancel"> <FONT face="宋體"> </FONT> <INPUT class="button_ok" type="button" onclick="history.go(-1)" value="返回" /><span id="Label1"></span></td></tr></table></form> </body> </HTML>總結
以上是生活随笔為你收集整理的Javaweb中上传图片,获取相对路径,绝对路径的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 图片框
- 下一篇: 重学JavaWeb —— Servlet