老规矩还是先上图看效果:

对于上传文件,浏览器在上传的过成中将文件已字节流的形式提交到服务器,小编一般选择采用apache的开源工具common-fileupload这个文件上传组件。这个common-fileupload上传组件的jar包可以去apache官网上面下载,给出ssm框架pom.xml 配置
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency>
上传页面的代码如下(jsp):
<form action="<%=request.getContextPath()%>/UserController/fileUpload" method="post" enctype="multipart/form-data" id="uploadForm">
<input type="file" name="images">
<input type="file" name="images">
<button type="submit" name="" >上传</button>
</form>
这里使用传统的form 表单提交 值得注意的地方 enctype="multipart/form-data" 必写来表示进行文件上传 如果多图上传input的name 属性一定要相同
处理文件上传的HttpServlet 工具类
//设置上传保存图片的路径 url是你要保存的图片的路径
//为保证服务器安全,上传文件应该放在外界无法直接访问的目录下,比如放于WEB-INF目录下。
String savePaht=url;
File file=new File(savePaht);
//判断上传的目录是否存在
if(!file.exists()){
//如果不存在则创建
file.mkdir();
}
//1 创建一个磁盘diskFileItemFactory 工厂
DiskFileItemFactory diskFileItemFactory=new DiskFileItemFactory();
//2 创建一个servletFileUpload 解析器
ServletFileUpload servletFileUpload=new ServletFileUpload(diskFileItemFactory);
servletFileUpload.setHeaderEncoding("UTF-8");
//3、判断提交上来的数据是否是上传表单的数据
if (ServletFileUpload.isMultipartContent(req)) {
try{
//4、使用ServletFileUpload解析器解析上传数据,解析结果返回的是一个List<FileItem>集合,每一个FileItem对应一个Form表单的输入项
List<FileItem> list=servletFileUpload.parseRequest(req);
for(FileItem item:list){
if(item.isFormField()){
//如果fileitem中封装的是普通输入项的数据
}else{
//如果fileitem中封装的是上传文件
//得到上传的文件名
String fileName=item.getName();
if(fileName!=null || !"".equals(fileName)){
//验证上传的图片后缀 是不是以 (jpg,png,jpeg)结尾的
if(fileName.substring(fileName.lastIndexOf(".")+1).equals("jpg") ||
fileName.substring(fileName.lastIndexOf(".")+1).equals("png")||
fileName.substring(fileName.lastIndexOf(".")+1).equals("jpeg")){
fileName=fileName.substring(fileName.lastIndexOf("."));
//赋予新名字 采用的是时间戳(防止有重名的文件保证唯一性 如果不采用时间戳可以采用UUID)
//如果不赋予新的名字 上传的图片有重复 会自动覆盖
String newfileName=new Date().getTime()+fileName;
//获取item中的上传文件的输入流
InputStream in=item.getInputStream();
//把图片输出到指定的文件中
FileOutputStream out=new FileOutputStream(savePaht + "\\" + newfileName);
//创建一个缓冲区
byte bytes[]=new byte[1024];
//验证输入流中的数据是否读完
int len=0;
while((len=in.read(bytes))>0){
//使用FileOutputStream 输出到指定文件中
out.write(bytes,0,len);
}
System.out.println("上传成功!");
//关闭输入流
in.close();
//关闭输出流
out.close();
//删除处理文件上传时生成的临时文件
item.delete();
}else{
//必须是图片
}
}else{
//如果图片文件名为空
}
}
}
}catch(Exception e){
e.printStackTrace();
}
}else{
//如果不是使用表单提交数据
}
到这里就告一段落 其实很简单 多写多练 自认而然就得心应手 当然还有很多其他的方法
后面会继续跟新下载,excl导入,导出 等。。。。
540





