📄 uploadservlet.java
字号:
package com.j2medev.chapter4;
import java.io.*;
import java.net.URLDecoder;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.commons.fileupload.*;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.servlet.ServletRequestContext;
public class UploadServlet extends HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置编码格式为UTF-8
request.setCharacterEncoding("UTF-8");
//把响应的Content-Type设置为application/octet-stream,
//以基本数据类型和String的方式向客户端传输数据
response.setContentType("application/octet-stream");
ServletRequestContext rc = new ServletRequestContext(request);
//判断请求是否是multipart类型的
boolean isMultipart = ServletFileUpload.isMultipartContent(rc);
if(isMultipart){
FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);
try {
//解析请求,返回元素类型为FileItem的List
List items = upload.parseRequest(request);
Iterator i = items.iterator();
while(i.hasNext()){
FileItem file = (FileItem)i.next();
if(file.isFormField()){
//是Form的字段,需要使用URLDecoder.decode方法解码
System.out.println("["+file.getFieldName()+"]="+URLDecoder.decode(file.getString(),"utf-8"));
}else{
//处理文件上传
long size = file.getSize();
System.out.println("the file size is "+size);
String path = getServletContext().getRealPath("/");
System.out.println(path);
File f = new File(path+"file.jpg");
try {
//写文件
file.write(f);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
} catch (FileUploadException ex) {
ex.printStackTrace();
}
}else{
//如果不是multipart类型,使用getParameter()读取即可
Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
String p = (String)e.nextElement();
System.out.println("["+p+"]"+"="+request.getParameter(p));
}
}
//检查是否有Cookie发送过来
Cookie[] cookies = request.getCookies();
if(cookies != null){
//显示cookie的name和value
for(int i = 0;i<cookies.length;i++){
System.out.println(cookies[i].getName()+"="+cookies[i].getValue());
}
}else{
//如果是第一次,则向客户端发送cookie
Cookie cookie = new Cookie("cookie","j2medev.com");
cookie.setPath("/");
cookie.setMaxAge((int)new Date().getTime()%(60*60));
response.addCookie(cookie);
}
//向客户端发送数据
DataOutputStream dos = new DataOutputStream(response.getOutputStream());
dos.writeUTF("upload picture successfully");
dos.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
public String getServletInfo() {
return "Short description";
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -