看板 java 關於我們 聯絡資訊
一、前言 各位先進大家好,小弟最近在看良葛格的Servlet & JSP教學手冊。 跟著範例做的時候遇到了一個問題,然而始終不了解問題發生的原因。 於是Google了以下的關鍵字: 1. Content-Disposition 2. Part.getHeader 3. header; filename; 都無法找到問題的解答,於是在此PO文向各位先進請教。 二、作業環境 Windows 7 64-bit JDK1.70_45 Apache Tomcat 7.0 Eclipse Indigo 三、問題陳述 在書本第三章的部份提到了可以用java.servlet.http.Part的getHeader方法 處理檔案上傳的需求,然而getHeader方法傳回的內容中,filename的部份 始終都是傳回絕對路徑... 例:filename="C:/downloads/test.jpg" 而非filename="test.jpg" 而在另一臺同樣作業環境的主機下測試得到的結果卻是相反的... 四、程式碼 1. HTML部份 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <form action="upload2.do" method="post" enctype="multipart/form-data"> 上傳相片:<input type="file" name="photo" /><br><br> <input type="submit" value="上傳" name="upload" /> </form> </body> </html> 2. Servlet部份 package test; import java.io.*; ... ... import部份省略以免佔太多版面 @MultipartConfig(location="C:/workspace") @WebServlet("/upload2.do") public class UploadServlet extends HttpServlet { private static final long serialVersionUID = 1L; @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("UTF-8"); Part part=request.getPart("photo"); String fileName=getFileName(part); part.write(fileName); } private String getFileName(Part part) { String header=part.getHeader("Content-Disposition"); String fileName=header.substring( header.indexOf("filename=\"")+10, header.lastIndexOf("\"")); return fileName; } } 程式碼的部份都是照抄書本上的 想請問各位先進Content-Disposition的內容中 filename的部份是否會因為eclipse、瀏覽器…或是其他因素的設定不同 而造成以上的結果呢? 以上 麻煩各位先進提供說明或是關鍵字 若有說明不夠詳細的部份 還請各位不吝指教 謝謝<(__ __)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 175.182.35.28
sbrhsieh:跟瀏覽器實作有關。只有檔名(沒路徑)比較合理。 12/05 22:47
Expsun:可是我兩台電腦都是用Eclipse的internal web browser @@... 12/06 05:40
Expsun:出現不合理狀況的那台要設成ie才會只有檔案,firefox就會 12/06 05:43
Expsun:發生問題 謝謝sbrihsieh大! 12/06 05:48