java+mv+文件_springmv 文件上传和下载

本文详细介绍了如何使用SpringMVC实现文件的上传和下载,包括单文件上传、多文件上传、文件重命名、分文件夹管理、保存文件路径到数据库以及文件列表查询和下载。内容涵盖控制器、配置文件、工具类等多个方面。
摘要由CSDN通过智能技术生成

springMVC的文件上传下载

1.准备工作

commons-io

commons-fileupload

35458c75fc32408c73a8f8c58d1eee1d.png

d1d2784eb54ba8d5138b05fbc0ff0418.png

2.普通单文件上传

1.创建index.jsp

800ca102ec89a2a0c20cfbf763579092.png

2.创建FileUploadController

*/

@Controller

@RequestMapping("upload")

public class FileUploadController {

/**

* 单文件上传

*/

@RequestMapping("upload01")

public String upload01(MultipartFile mf,HttpSession session){

System.out.println(mf);

System.out.println(mf.getContentType()); //文件类型

System.out.println(mf.getName());//input里面的name属性名 mf

System.out.println(mf.getOriginalFilename());//文件名

System.out.println(mf.getSize());//文件大小

//System.out.println(mf.getInputStream());//得到文件流

//1,得到文件上传的目录

String realPath=session.getServletContext().getRealPath("/upload");

//2,得到文件名

String oldName=mf.getOriginalFilename();

//3,构造文件对象

File file=new File(realPath, oldName);

//4,上传文件

try {

mf.transferTo(file);

} catch (IllegalStateException | IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

return "success";

}

}

3.配置springmvc.xml对文件上传的支持

3.普通多文件上传

1.修改index.jsp

b9fd164e70939e8c2d5984ef221e63da.png

2.修改FileUploadController

6935eac2cc37c6eaddc1b1da669445fd.png

4.普通文件上传改名字

为什么要改名字

因为不改名,那么上传的文件名如果相同,内容不同就会被覆盖

1.修改index.jsp

5f397cdb2f86c48e8bf9b739ea331ac3.png

2.修改FileUploadController

1fe3fd0ab2ab696b9821d814a9917ae5.png

3.创建RandomUtils

/**

* 生成字符串的工具类

* @author LJH

*

*/

public class RandomUtils {

//时间生成规则

private static SimpleDateFormat format1=new SimpleDateFormat("yyyyMMddHHmmssSSS");

//生成随机数对象

private static Random random=new Random();

/**

* 使用时间+四位随机数生成新的文件名

* @param oldName dsfadsafdsafsdafads.fdsaf.sda.fdsa.f.sda.fdsa.fdsa.doc

* @return

*/

public static String createFileNameUseTime(String oldName) {

//1,得到文件的后缀

String suffix=oldName.substring(oldName.lastIndexOf("."), oldName.length());

//2,得到时间的字符串

String time=format1.format(new Date());

//3,得到四位随机数

Integer num=random.nextInt(9000)+1000;

//4,拼接

return time+"_"+num+suffix;

}

/**

* 使用uuid生成新的文件名

* @param oldName

* @return

*/

public static String createFileNameUseUUID(String oldName) {

//1,得到文件的后缀

String suffix=oldName.substring(oldName.lastIndexOf("."), oldName.length());

//2,得到uuid

String uuid=UUID.randomUUID().toString().replace("-", "");

return uuid+suffix;

}

}

5.普通文件上传改名字并分文件夹管理

为什么要分文件夹管理

如果整项目的文件都放一起,那么对文件夹的管理会非常困难

1.修改index.jsp

8c8a98511fb33c5166eeda6379afe21e.png

2.修改FileUploadController

/**

* 文件上传改名并分文件夹管理

*/

@RequestMapping("upload04")

public String upload04(MultipartFile mf,HttpSession session){

//1,得到文件上传的目录

String realPath=session.getServletContext().getRealPath("/upload");

//2,得到文件夹的名字

String dirName=RandomUtils.createDirNameUserDate();

//3,构造文件夹对象

File dirFile=new File(realPath,dirName);

//4,判断文件夹是否存在

if(!dirFile.exists()){

dirFile.mkdirs();//创建文件夹

}

//5,得到文件名

String oldName=mf.getOriginalFilename();

//6,生成新的文件名

String newName=RandomUtils.createFileNameUseTime(oldName);

//7,构造文件对象

File file=new File(dirFile, newName);

//5,上传文件

try {

mf.transferTo(file);

} catch (IllegalStateException | IOException e) {

e.printStackTrace();

}

return "success";

}

3.修改RandomUtils

c198fe5af04c42b591ddeac0aad6c95d.png

64be28a3a6e7598e8cbc00095ec0c5a4.png

6.文件上传改名字并分文件夹管理并保存路径到数据库

在实际开发,我们的文件是保存到服务器硬盘上,而文件的地址是存在数据库里

在实际开发,文件的存放是有专门的服务器,文件服务器

1.修改index.jsp

34a376e77a0d122377e41e3cfafb7882.png

2.创建数据库并集成ssm

0670513268b2c316e76f3b18b1cd0871.png

1,导包

2,修改applicaiton-dao.xml

3,修改applicaiton-service.xml

4,修改applicaitonContext.xml

5,修改web.xml

3.创建Attachment

4d4711c09616ea84026c3fc200325b50.png

4.创建AttachmentMapper

63844dea742824f1023a84072ee9387c.png

5.创建AttachmentMapper.xml

生成的

6.创建AttachmentVo

40cd1616734f0ff823a649a89f9c2a5c.png

7.创建AttachmentService

1fa1891ae73bf48a8e8e4a403974016c.png

8.创建AttachmentServiceIpml

2200e1bad6d96ef27018e667db3520a1.png

9.创建AttachmentController

/**

* 文件管理控制器

* @author LJH

*

*/

@Controller

@RequestMapping("attachment")

public class AttachmentController {

@Autowired

private AttachmentService attachmentService;

/**

* 文件上传改名并分文件夹管理

*/

@RequestMapping("addAttachment")

public String addAttachment(MultipartFile mf,HttpSession session){

//1,得到文件上传的目录

String realPath=session.getServletContext().getRealPath("/upload");

//2,得到文件夹的名字

String dirName=RandomUtils.createDirNameUserDate();

//3,构造文件夹对象

File dirFile=new File(realPath,dirName);

//4,判断文件夹是否存在

if(!dirFile.exists()){

dirFile.mkdirs();//创建文件夹

}

//5,得到文件名

String oldName=mf.getOriginalFilename();

//6,生成新的文件名

String newName=RandomUtils.createFileNameUseTime(oldName);

//7,构造文件对象

File file=new File(dirFile, newName);

//5,上传文件

try {

mf.transferTo(file);

AttachmentVo attachmentVo=new AttachmentVo();

attachmentVo.setFoldname(oldName);

attachmentVo.setFcontenttype(mf.getContentType());

attachmentVo.setFcreatetime(new Date());

attachmentVo.setFsize(Double.valueOf(mf.getSize()));

//存放相对路径

attachmentVo.setFpath("upload/"+dirName+"/"+newName);

//说明文件上传成功

attachmentService.addAttachment(attachmentVo);

} catch (IllegalStateException | IOException e) {

e.printStackTrace();

}

return "success";

}

}

7.查询文件列表

1.修改index.jsp

027f5b713ba182e5357cf2654c5f547f.png

2.修改AttachmentController

0fc26579c7b6e21c81bbc92a62241f09.png

3.修改AttachmentService

518fb942ecbc767a77337526ac826fb1.png

4.修改AttachmentServiceImpl

97f6187d721b4acf7579e728f409561b.png

5.修改AttachmentMapper

df9e0b4e701e40aa84db4d6c5ac2527e.png

6.修改AttachmentMapper.xml

1d5cba1b9214816973c8812fd57ceda2.png

7.创建WEB-INF/view/list.jsp

String path = request.getContextPath();

String basePath = request.getScheme() + "://"

+ request.getServerName() + ":" + request.getServerPort()

+ path + "/";

%>

文件列表

所有文件


编号老名字上传时间文件大小文件类型操作
${sn.fid }${sn.foldname }${sn.fsize }${sn.fcontenttype }

下载1||

下载2

0dd6ec01f3a77011f45a55b7323da020.png

8.文件下载

下载方式

1,直接使用路径下载

|--优点:不能写后台代码

|--缺点:丢失了文件老名字

暴露了文件在服务器里面的路径

2,使用后台下载

|--优点:可以显示文件老名字 隐藏了文件在服务器的路径

|--缺点:要写代码

标签:文件,mf,String,文件夹,springmv,上传,下载,oldName

来源: https://blog.csdn.net/qq_41532872/article/details/88807063

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值