您的位置:首页 > 编程语言 > Java开发

Spring-MVC框架实现文件的上传、修改、下载

2014-02-17 10:58 302 查看
要使用Spring-MVC框架实现文件的上传、修改、下载,代码到不是很多,只是需要多个类来实现,这里使用我所写过的项目里的Version实体来说明-->首先看一下数据库里的表Versions字段:(waraddress、sqladdress就是要上传的文件真实名字,warrealname、sqlrealname是上传前的文件名字) id 系统类型id , waraddress war包地址,sqladdress ,sql脚本地址 ,descr 说明 , warrealname war包源名, sqlrealname sql脚本源名, svnaddress 软件svn地址 , vername 版本名称 , verno 版本号
最基础的实体类:Version类最简单就不看了DAO层:VersionMapper类--》部分代码//用于修改记录,注意这里更新的字段里没有文件的名字waraddress 、sqlrealname 、sqladdress 、warrealname @Update("UPDATE versions SET typeid=#{typeid},descr=#{descr},vername=#{vername},svnaddress=#{svnaddress},verno=#{verno} WHERE id=#{id}")void updateVersion(Version version);
//用户插入记录void addVersion(Version version);//修改上传的war类文件名@Update("UPDATE versions SET waraddress=#{waraddress},warrealname=#{warrealname} where id=#{id}")void updateVersionWaraddress(Version version);//修改上传的sql类文件名@Update("UPDATE versions SET sqladdress=#{sqladdress},sqlrealname=#{sqlrealname} where id=#{id}")void updateVersionSqladdress(Version version);Service服务层:VersionService类--》部分代码void updateVersion(Version version);
void addVersion(Version version);void updateVersionWaraddress(Version version);
void updateVersionSqladdress(Version version);[b]Service服务层:VersionServiceImp类--》部分代码[/b]
@AutowiredVersionMapper versionMapper;@Overridepublic void updateVersion(Version version) {versionMapper.updateVersion(version);}@Overridepublic void addVersion(Version version) {versionMapper.addVersion(version);

}@Overridepublic void updateVersionWaraddress(Version version) {versionMapper.updateVersionWaraddress(version);
}@Overridepublic void updateVersionSqladdress(Version version) {versionMapper.updateVersionSqladdress(version);
}[b][b]最重要的Controller控制层:VersionController类--》部分代码[/b][/b]
@RequestMapping(value = "/version_add")public String versionAdd(ModelMap model, Version version, HttpServletRequest request, @RequestParam MultipartFile[] myfiles){Long id = version.getId();Version version2 = versionService.loadVersionById(id);if (id != null) {//修改记录versionService.updateVersion(version);}else {//增加记录versionService.addVersion(version);}//获取文件保存的路径String fileDir = request.getSession().getServletContext().getRealPath("resources/file");//修改前的war、sql文件File preWarFile = new File(fileDir + File.separator +version2.getWaraddress());File preSqlFile = new File(fileDir + File.separator +version2.getSqladdress());//上传、修改文件for(int i = 0;i < 2;i++){MultipartFile myfile = myfiles[i];if(!myfile.isEmpty()){//真实文件名String realname = myfile.getOriginalFilename();String suffix = realname.substring(realname.lastIndexOf("."));//重命名文件Long now = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()));Long random = (long) (Math.random() * now);String filename = now + "" + random + suffix.toLowerCase(); if(i == 0){version.setWaraddress(filename);version.setWarrealname(realname);//更新文件名versionService.updateVersionWaraddress(version);//删除修改前的文件if(preWarFile.exists()){preWarFile.delete();}}if(i == 1){version.setSqladdress(filename);version.setSqlrealname(realname);//更新文件名versionService.updateVersionSqladdress(version);//删除修改前的文件if(preSqlFile.exists()){preSqlFile.delete();}}File file = new File(fileDir + File.separator + filename);try {//开始上传文件myfile.transferTo(file);} catch (IllegalStateException | IOException e) {e.printStackTrace();}}}return "redirect:version_list";}[b][b]View视图层:list.jsp--》部分代码[/b][/b][b][b](在页面直接写文件所在的路径,页面上点击就可以直接下载了)[/b][/b]<td style="text-align: center;"><a href="${root}/resources/file/${version.waraddress}" title="${version.warrealname}">下载</a></td><td style="text-align: center;"><a href="${root}/resources/file/${version.sqladdress}" title="${version.sqlrealname}">下载</a></td>这里上传的文件只是原文件,是没有经过压缩的,当然上传文件的方式是有很多的,若果想要改成上传压缩文件,或者做一些其他的修改,可以参考这里

本文出自 “Java一样的少年” 博客,请务必保留此出处http://zhengjiang.blog.51cto.com/8568971/1359719
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: