簡單的上傳圖片
1.在index.jsp文件中的body之間加
<form action="/Test/servlet/RegisterServlet" method="post" enctype="multipart/form-data">
<br>
頭像:<input type="file" name="userHead">
<br>
<input type="submit" value="提交">
</form>
2.在Test項目中創建servlet類命名爲 RegisterServlet
在servlet文件中doPost方法中加
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
//保存路徑
String Path= null;
//判斷請求消息中的內容是否是“multipart/form-data”類型
boolean multipart = ServletFileUpload.isMultipartContent(request);
if (multipart) {
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> fileItems = upload.parseRequest(request);
//將圖片保存到指定文件夾下
File userHead = uploadHead(fileItems, "userHead");
if(userHead!=null && userHead.exists())
{
String fullPath=userHead.getPath();
String[] paths=fullPath.split("/");
String fileName=paths[paths.length-1];
//拼出網絡路徑
Path= SystemConfig.API_BASE_URL_HEAD+fileName;
}
}catch (FileUploadException e) {
e.printStackTrace();
}
}
//直接在網頁中打印圖片
// out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
// out.println("<HTML>");
// out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
// out.println(" <BODY>");
// out.println(" <img src=\""+Path+"\"> ");
// out.println(" </BODY>");
// out.println("</HTML>");
// out.flush();
// out.close();
}
3.將圖片保存到指定文件夾
把方法加到RegisterServlet類中
public File uploadHead(List<FileItem> items, String name) { for (FileItem item : items) { if (!item.isFormField() && name.equals(item.getFieldName())) { NameValuePair pair = FileHelper.getTempFile(item.getName()); File file = new File(pair.getKey()); if (!file.exists()) { try { file.createNewFile(); } catch (IOException e) { e.printStackTrace(); } } try { item.write(file); } catch (Exception e) { e.printStackTrace(); } return file; } } return null; }
4.定義路徑宏定義 SystemConfig類中
public class SystemConfig {
public static final String API_BASE_URL_HEAD="http://127.0.0.1:8080/Test/img/";//圖片的訪問地址
public static final String API_BASE_PATH_HEAD="/Users/ty/Desktop/apache-tomcat-7.0.50/webapps/Test/img/";//要存儲的路徑
}
圖片一定要放到tomcat下相應項目的文件夾下(不然會訪問不到!)
5.FileHelper.java文件
public class FileHelper {
public static NameValuePair getTempFile(String name) {
//String path = System.currentTimeMillis() + "." + getEndWith(name);
String path=getFileShortName(name);
String key = SystemConfig.API_BASE_PATH_HEAD + path;
return new NameValuePair(key, path);
}
public static String getEndWith(String fileName) {
int i = fileName.lastIndexOf(".");
if (i >= 0) {
return fileName.substring(i + 1, fileName.length());
}
return "";
}
public static String getFileShortName(String fileName)
{
String[] strs=fileName.split("/");
return strs[strs.length-1];
}
}
6.NameValuePair.java文件public class NameValuePair {
private String key;
private String value;
public NameValuePair(String key, String value) {
this.key = key;
this.value = value;
}
public String getKey(){
return key;
}
public String getValue(){
return value;
}
public String toString(){
return "key="+key+";value="+value;
}
}
7.一定要加入文件上傳組件
8.看在指定的文件夾中是否有 所傳的文件或圖片