package io.modor.servlet;
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 javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
import java.util.UUID;
import java.io.File;
@WebServlet(name = "UploadServlet")
public class UploadServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
DiskFileItemFactory factory = new DiskFileItemFactory(20*1024, new File("F:/tmp/"));
ServletFileUpload sfu = new ServletFileUpload(factory);
sfu.setFileSizeMax(100000*1024);
String rootPath = this.getServletContext().getRealPath("/WEB-INF/files/");
try{
List<FileItem> fileItemList = sfu.parseRequest(request);
for(FileItem item : fileItemList){
if(item.getContentType().equals("text/plain")){
String filename = item.getName();
int index = filename.lastIndexOf("\\");
if(index != -1){
filename = filename.substring(index+1);
}
String savename = UUID.randomUUID().toString().replace("-","")+"_"+filename;
int hCode = savename.hashCode();
String hex = Integer.toHexString(hCode);
File dirFile = new File(rootPath,hex.charAt(0)+"/"+hex.charAt(1));
dirFile.mkdirs();
File destFile = new File(dirFile,savename);
item.write(destFile);
}
}
}catch (FileUploadException e){
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
}