1、1第8章 SpringMVC框架03文件上传下载框架程序设计(Java)28.3.0学习目标前台上传文件到后台前台上传文件到后台1文件下载文件下载2软件工程系本科课件框架程序设计java38.3.1文件上传文件上传o 例子1 上传一个文件到工程中的upload目录,上传后显示上传成功n 上传文件abc.txtn 操作成功提示n 同时,在服务器的upload目录中可以看到该文件已经存在软件工程系本科课件框架程序设计java48.3.1文件上传文件上传-环境配置环境配置o 步骤1:环境配置o(1)引入文件上传所需的jar包n commons-fileupload-1.3.3.jarn 下载地址:h
2、ttp:/commons.apache.org/proper/commons-fileupload/download_fileupload.cgin commons-io-2.0.jarn 下载地址:http:/commons.apache.org/proper/commons-io/download_io.cgi软件工程系本科课件框架程序设计java58.3.1文件上传文件上传-环境配置环境配置o(2)在springMVC的基本配置文件中配置MultipartResolver来解析文件上传请求n n n n n 说明,上述配置仅仅只需要一次软件工程系本科课件框架程序设计java68.3.1文
3、件上传文件上传o 步骤2:在WebContent/jsp目录下编写上传文件操作页面upload.jspn n 文件:n n o 说明:n 表单提交方式一定是postn 表单要指定enctype属性为multipart/form-data,在使用包含文件上传控件的表单时,必须使用该值n 文件选择控件软件工程系本科课件框架程序设计java78.3.1文件上传文件上传o 步骤2:在WebContent/jsp目录下编写文件上传成功页面download.jspn 文件上传成功!软件工程系本科课件框架程序设计java88.3.1文件上传文件上传o 步骤3:新建上传控制器类springmvc_demo.c
4、ontroller.UploadControllern Controllern public class UploadController n RequestMapping(/upload)n public String updoad()nreturn upload;n n 软件工程系本科课件框架程序设计java98.3.1文件上传文件上传o步骤3:在控制器中加入处理表单提交请求的actionnRequestMapping(/upload_submit)npublic ModelAndView fileUpload(RequestParam(file)MultipartFile file,Ht
5、tpServletRequest request)nthrows IOException n/获取文件名nString filename=file.getOriginalFilename();n/获取文件保存到服务器上的地址nString path=request.getServletContext().getRealPath(/upload/)+filename;nFile f=new File(path);n/判断upload文件夹是否存在,如果不存在则创建nif(!f.getParentFile().exists()nf.getParentFile().mkdirs();nn/将上传的文
6、件传输到指定路径nfile.transferTo(f);n/返回视图nModelAndView mv=new ModelAndView(download);nmv.addObject(filename,filename);/将文件名传递到下一个页面nreturn mv;n软件工程系本科课件框架程序设计java108.3.1文件上传文件上传o 步骤4:因为题目要求在download.jsp页面中显示文件名,一次download.jsp页面修改如下:n 文件$filename上传成功!软件工程系本科课件框架程序设计java118.3.2文件下载文件下载o 例子2 上传一个文件到工程中upload目
7、录,上传后显示上传成功n 上传文件abc.txtn 操作成功提示n 同时,单击下载超链接可以下载文件到本地软件工程系本科课件框架程序设计java128.3.2文件下载文件下载o 步骤1:修改文件上传成功页面download.jspn 文件$filename上传成功!n 需要时可以下载该文件。软件工程系本科课件框架程序设计java138.3.2文件下载文件下载o步骤2:修改UploadControllernRequestMapping(/upload_submit)npublic ModelAndView fileUpload(RequestParam(file)MultipartFile fi
8、le,HttpServletRequest request)nthrows IOException n/获取文件名nString filename=file.getOriginalFilename();n/获取上传文件路径nString path=request.getServletContext().getRealPath(/upload/)+filename;nFile f=new File(path);n/判断upload文件夹是否存在,如果不存在则创建nif(!f.getParentFile().exists()nf.getParentFile().mkdirs();nn/将上传的文件
9、传输到指定路径nfile.transferTo(f);n/返回视图nModelAndView mv=new ModelAndView(download);nmv.addObject(filename,filename);n/将下载该文件的url传递到前台nString uripath=/springmvc_demo/upload/+filename;nmv.addObject(uripath,uripath);n/获取服务器上nreturn mv;n软件工程系本科课件框架程序设计java148.3.2文件下载文件下载o 步骤3:修改文件上传成功页面download.jspn 文件$reques
10、tScope.filename上传成功!n 需要时可以下载该文件。软件工程系本科课件框架程序设计java158.3.2文件下载文件下载o 单击下载发现:o 页面报404(找不到文件)的错误o 原因何在?软件工程系本科课件框架程序设计java168.3.2文件下载文件下载o 分析404原因:o web.xml文件中配置的DispatcherServlet的映射地址o 的/o 把所有的请求都交给springMVC去处理了,导致对js/css/jpg/gif等静态资源的访问就会得不到o 如何解决项目中静态资源访问不到的问题?o 有三种办法,这里用最简单的一种n 在spring的配置文件中添加如下行:问题得到解决n n 6.4.3第十二次作业第十二次作业o 根据本节课例子,实现图片的上传和下载。上传文件要求放在工程文件夹下WebContent的files文件夹中框架程序设计java17