表单form中添加enctype="multipart/form-data"属性
servlet类上添加@MultipartConfig注解
且必须使用post请求
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取文件数据
Part picture = req.getPart("picture");
//得到的是一个[form-data; name="picture"; filename="文件名"]字符串
String s = picture.getHeaders("content-disposition").toString();
String head = "filename=\"";
//获取文件名
String file = s.substring(s.indexOf(head)+head.length(),s.length()-2);
//生成文件名
String filename = UUID.randomUUID().toString()+file.substring(file.indexOf('.'),file.length());
//保存文件
saveFile(picture.getInputStream(),filename);
}
//保存文件到文件服务器
private void saveFile(InputStream inputStream,String filename){
String path = "D:\\file\\"+filename;
try {
//获取字节缓冲输出流
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(new FileOutputStream(path));
//获取字节缓冲输入流
BufferedInputStream bufferedInputStream = new BufferedInputStream(inputStream);
int ch = 0;
while((ch = bufferedInputStream.read()) != -1){
bufferedOutputStream.write(ch);
}
//刷新
bufferedOutputStream.flush();
//关流
bufferedOutputStream.close();
bufferedInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}