HttpServlet利用commons-fileupload 上传二进制文件
主要利用缓冲流上传
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
try {
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);
List<FileItem> list =servletFileUpload.parseRequest(req);
for (FileItem fileItem : list) {
if (fileItem.isFormField()) {
String name = fileItem.getFieldName();
String value = fileItem.getString("UTF-8");
System.out.println(name + ":" + value);
} else {
String fileName= fileItem.getName();
long size=fileItem.getSize();
System.out.println(fileName+":"+size+"Byte");
InputStream inputStream=fileItem.getInputStream();
BufferedInputStream bufferedInputStream=new BufferedInputStream(inputStream);
String path=req.getServletContext().getRealPath(fileName);
OutputStream outputStream=new FileOutputStream(path);
BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(outputStream);
byte[] data=new byte[1024];
int length;
while ((length=bufferedInputStream.read(data))!=-1) {
bufferedOutputStream.write(data,0,length);
}
bufferedOutputStream.close();
outputStream.close();
bufferedInputStream.close();
inputStream.close();
System.out.println("上传成功");
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
}