由于可以上传多个文件,所以在后台获取时需要解析多个文件
一、前台页面文件上传
二、后台java源代码
package com.kp.servlet;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.UnsupportedEncodingException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
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.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.json.JSONObject;
import com.wb.util.SysUtil;
public class getUploadImg extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
public void service(HttpServletRequest request, HttpServletResponse response) {
try {
PrintWriter writer = response.getWriter();
writer.append("");
writer.flush();
writer.close();
} catch (IOException e2) {
// TODO Auto-generated catch block
e2.printStackTrace();
}
// 获取文件需要上传到的路径
// String path = "D:/temp/";
String path = request.getSession().getServletContext().getRealPath("/");
path += "uploads/";
File dir = new File(path);
if (!dir.exists()) {
dir.mkdir();
}
try {
request.setCharacterEncoding("utf-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setRepository(dir);
factory.setSizeThreshold(1024 * 1024 * 1);// 1MB空间
ServletFileUpload upload = new ServletFileUpload(factory);
try {
List<FileItem> list = upload.parseRequest(request);
Map<String, String> map = new HashMap<String, String>();
FileItem fileContent = null;
for (FileItem item : list) {
if ("file".equals(item.getFieldName())) {
fileContent = item;
} else {
map.put(item.getFieldName(), new String(item.get()));
}
}
if(null == fileContent){
}else{
String fileName = (String) map.get("fileId");
fileName = fileName.substring(fileName.lastIndexOf("."));
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
String now = df.format(new Date());
fileName = SysUtil.getId() + now + fileName;
// fileName = "自动生成字符" + now + fileName;
map.put("fileName", fileName);
saveFile(fileContent, map, path);
System.out.println(map.toString());
//遍历map
JSONObject responseJson =new JSONObject();
responseJson.append("fileName", map.get("fileName"));
PrintWriter writer = response.getWriter();
writer.write(responseJson.toString());
writer.flush();
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void saveFile(FileItem fileContent, Map<String, String> map, String path)
throws IOException {
String fileName = (String) map.get("fileName");
File file = new File(path, fileName);
file.createNewFile();
FileOutputStream outputStream = new FileOutputStream(file);
int size = -1;
byte[] temp = new byte[1024];
InputStream in = fileContent.getInputStream();
while ((size = in.read(temp)) != -1) { // 每次读取1KB,直至读完
outputStream.write(temp, 0, size);
}
outputStream.flush();
outputStream.close();
}
}