Java Webファイルアップロード機能の実現
5559 ワード
本文は主にhtmlフォームを利用してファイルをアップロードするバックグラウンドコードについて実现します。
二つのツール類Appache commons-fileupladとcommons-iを使う必要があります。
注意ファイルのアップロードが選択されているかどうかを確認します。最初に書くときはチェックを入れず、ファイルが選択されていません。フォームを提出してからずっと異常を報告しています。
もちろんフロントにjsを加えてファイルを選択するかどうかを判断してもいいです。
フロントページコード
二つのツール類Appache commons-fileupladとcommons-iを使う必要があります。
注意ファイルのアップロードが選択されているかどうかを確認します。最初に書くときはチェックを入れず、ファイルが選択されていません。フォームを提出してからずっと異常を報告しています。
もちろんフロントにjsを加えてファイルを選択するかどうかを判断してもいいです。
フロントページコード
バックグラウンドJava Servletコード
package demo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
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.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;
public class UploadServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
//1、
// web “temp”
String path_temp = this.getServletContext().getRealPath("temp");
File file = new File(path_temp) ;
DiskFileItemFactory factory = new DiskFileItemFactory(1024*1024, file);//1024*1024
// new factory, ,
//DiskFileItemFactory factory = new DiskFileItemFactory();
//factory.setSizeThreshold(1024*1024);
//factory.setRepository(file);
//2、
ServletFileUpload upload = new ServletFileUpload(factory);
// UTF-8, , 。
upload.setHeaderEncoding("UTF-8");
// , ,
boolean multipartContent = upload.isMultipartContent(request);
if(multipartContent) {
// , request
List parseRequest = upload.parseRequest(request);
if(parseRequest!=null) {
for(FileItem item :parseRequest) {
//
boolean formField = item.isFormField();
if(formField) {
//
String fieldName = item.getFieldName();
String fieldValue = item.getString("UTF-8");//
// enctype="multipart/form-data" ,request.getParameter ,
//String parameter = request.getParameter("username");// , !
System.out.println(" :"+fieldName+"="+fieldValue);
}else {
//
String name = item.getName();
System.out.println(" :"+name);
System.out.println(item);
// , , , IO
if(item.getSize()==0L) {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" ");
return;
}
if(name=="") {
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" ");
return;
}
InputStream in = item.getInputStream();
String path_store = this.getServletContext().getRealPath("upload");
OutputStream out = new FileOutputStream(path_store+"/"+name);
IOUtils.copy(in, out);
in.close();
out.close();
//
item.delete();
}
}
}
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" ");
}else {
// , request.getParameter();
// ,
Map parameterMap = request.getParameterMap();
response.setContentType("text/html;charset=UTF-8");
response.getWriter().write(" ");
}
} catch (FileUploadException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}