欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ssm 前端上传文件,java后台接收文件并存储到mysql数据库(绝对路径)和下载

程序员文章站 2022-03-26 17:43:53
准备首先导入两个jar包,下方是maven依赖,版本可自己选 commons-io commons-io 1.4

准备

首先导入两个jar包,下方是maven依赖,版本可自己选

		<dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>1.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.2</version>
        </dependency>

html

<form name="form" action="" enctype="multipart/form-data"
				method="post">
	<input type="file" name="uploadFile" id="upload">
	<button type="submit" onclick="formSave()">保存</button>
</form>

<script>
function formSave() {
	document.form.action="${pageContext.request.contextPath}/test/save.do";
}
</script>

java后端

@RequestMapping("/save.do")
public void save(Contract contract, @RequestParam("uploadFile") MultipartFile file, HttpServletRequest	request) throws Exception {
        String trueName = file.getOriginalFilename();
        String path = "d:/";  //自己设置一个路径

        File file1 = new File(path + trueName);
        String uploadURL = path + trueName;
//        判断当前文件父级文件夹是否存在,如果不存在,就创建文件夹
        if (!file1.getParentFile().exists()) {
            file1.mkdirs();
        }
        try {
//            上传文件,核心功能
            file.transferTo(file1);
        } catch (IOException e) {
            e.printStackTrace();
        }
		
}

几个注意点

ssm 前端上传文件,java后台接收文件并存储到mysql数据库(绝对路径)和下载

接下来就是写service层和dao层,很简单,普通的增删改查(略)

下载


<a href="${pageContext.request.contextPath}/contract/downLoadAppendices.do?id=${contract.ID}">下载</a>

    @RequestMapping("/downLoadAppendices.do")
    public void downLoadAppendices(HttpServletRequest request,HttpServletResponse response) throws IOException {
    //前端传id值,根据id值查出数据库字段中的地址字符串
        String id = request.getParameter("id");
        String path = contractService.downLoadAppendices(id);
        // 修改文件名的编码格式
        String fName = path.trim();
        String fileName = fName.substring(fName.lastIndexOf("/")+1);
        ServletContext servletContext = request.getServletContext();
        FileInputStream fis = new FileInputStream(path);
        //MIME类型:在互联网通信过程中定义的一种文件数据类型
        String mimeType = servletContext.getMimeType(fileName);
        response.setHeader("content-type",mimeType);
        response.setHeader("content-disposition","attachment;filename="+fileName);
        ServletOutputStream sos = response.getOutputStream();
        byte[] buff = new byte[1024];
        int len = 0;
        while((len=fis.read(buff))!=-1){
            sos.write(buff,0,len);
        }
        fis.close();
    }

本文地址:https://blog.csdn.net/qq_29468977/article/details/109629682

相关标签: java