1、什么是文件上传
文件上传就是将你想要的文件写入到某个地方(本地计算机/服务器)
HTML表单提交
<form enctype="multipart/form-data" method="post" action="upload">
文件:<input type="file" name="fileUpload"/>
<input type="submit" value="上传"/>
</form>
这里method
必须要以post
提交action
指向处理上传的Servlet
上传文件时enctype
必须使用multipart/form-data
创建Servlet【upload】
// 创建磁盘文件项工厂:
DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
// 创建核心解析类:
ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
// 解析request请求:
try {
List<FileItem> list = servletFileUpload.parseRequest(request);
// 遍历集合获得到每个部分:
for (FileItem fileItem : list) {
// 判断是否是文件上传项:
if(fileItem.isFormField()){
// 普通项
String name = fileItem.getFieldName();
String value = fileItem.getString();
System.out.println(name+" "+value);
}else{
// 文件上传项
// 获得文件上传的路径:
String path = this.getServletContext().getRealPath("/upload");
// 获得文件名称:
String fileName = fileItem.getName();
// 获得文件的内容:
InputStream is = fileItem.getInputStream();
// 创建一个输出流:
OutputStream os = new FileOutputStream(path+"\\"+fileName);
// 两个流完成对接:
byte[] b = new byte[1024];
int len = 0;
while((len = is.read(b))!=-1){
os.write(b, 0, len);
}
is.close();
os.close();
}
}
} catch (FileUploadException e) {
e.printStackTrace();
}
2 条评论
厉害
我吃,我吃