FileUpAndDown.jsp
<%@ page language=" java" contentType="text/html; charset=UTF-8"%> <html> < head> <title>using commons Upload to upload file</title> </head> <script type="text/javascript"> function downFile(){ var fileId = document.getElementById("fileId").value; location.href="fileDownload?fileId=" + fileId; } </script> < style> * { font-family: "宋体"; font-size: 14px } </style> <body> <p align="center">文件上传下载</p> <form id="form1" name="form1" method="post" action="fileUpload" enctype="multipart/form-data"> <table border="0" align="center"> <tr> <td>上传文件:</td> <td><input name="file" type="file" size="20"></td> </tr> <tr> <td></td> <td><input type="submit" value="提交"> <input type="reset" name="reset" value="重置"></td> </tr> </table> </form> <div align="center"> <input type="text" id="fileId"><input type="button" value="依据Id下载文件" onclick=" javascript:downFile()"> </div> </body> </html>> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xx.persistence.FileUpAndDownMapper"> <resultMap id="fileBean" type="com.xx.web.FileUpAndDown"> <id column="ID" property="id" jdbcType="INTEGER" /> <result column="FILENAME" property="fileName" jdbcType="VARCHAR" /> <result column="TESTA" property="testa" javaType="byte[]" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" /> <result column="FILESTREAM" property="fileStream" javaType="byte[]" jdbcType="BLOB" typeHandler="org.apache.ibatis.type.BlobTypeHandler" /> </resultMap> <insert id="saveFileInfo" parameterType="java.util.HashMap"> INSERT INTO BLOBTEST(FILENAME, FILESTREAM) VALUES(#{fileName}, #{byt, javaType=byte[], jdbcType=BLOB, typeHandler=org.apache.ibatis.type.BlobTypeHandler}) </insert> <select id="getFileByPk" resultMap="fileBean" parameterType="int"> SELECT * FROM BLOBTEST WHERE ID=${value} </select> </mapper>
以下是文件下载的代码:
@ResponseBody @RequestMapping(value = "/fileDownload") public void fileDownload(HttpServletRequest request, HttpServletResponse response) throws IOException { String fileId = request.getParameter("fileId"); FileUpAndDown file = fileUpAndDownMapper.getFileByPk(Integer.parseInt(fileId)); byte[] fileStream = file.getFileStream(); String fileName = file.getFileName(); // 以流的形式下载文件 response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment; filename=\"" + new String(fileName.getBytes("gb2312"), "ISO8859-1" ) + "\""); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); toClient.write(fileStream); toClient.flush(); toClient.close(); }