java blob 文件上传下载
1、文件上传
pojo中为byte[] 类型,数据库中对应为blob类型。
主要代码:
FileInputStream fis = null; fis = new FileInputStream(new File(filePath)); byte[] inputByte = input2byte(fis); fileBean.setContent(inputByte); /** * 将 流 转换为byte * @param inStream * @return * @throws IOException */ public static final byte[] input2byte(InputStream inStream) throws IOException { ByteArrayOutputStream swapStream = null; try { swapStream = new ByteArrayOutputStream(); byte[] buff = new byte[1024]; int rc = 0; while ((rc = inStream.read(buff, 0, 1024)) > 0) { swapStream.write(buff, 0, rc); } return swapStream.toByteArray(); } catch (Exception e) { logger.info(e.getStackTrace()); } finally { if (swapStream != null) { safeClose(swapStream); } } return null; }
2、文件下载
@Override public void downFileByBlob(HttpServletRequest request, HttpServletResponse response, String fileId) throws IOException { AtFileupload bean = hibernateDao.getObject(AtFileupload.class, fileId); if (bean.getContent() != null) { String filename= bean.getFileName();//获取日志中存储的文件名称 String userAgent = request.getHeader("user-agent").toLowerCase(); if (userAgent.contains("msie") || userAgent.contains("like gecko")) { // IE filename = URLEncoder.encode(filename, "UTF-8"); } else { // 非IE filename = new String(filename.getBytes("UTF-8"), "iso-8859-1"); } try { byte[] fileStream = bean.getContent(); // 以流的形式下载文件 response.setContentType("application/x-msdownload"); response.setCharacterEncoding("UTF-8"); response.setHeader("Content-Disposition", "attachment; filename=" + filename); OutputStream toClient = new BufferedOutputStream(response.getOutputStream()); toClient.write(fileStream); toClient.flush(); toClient.close(); } catch (Exception e) { logger.info(e.getStackTrace()); } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!