java上传文件-大文件以二进制保存到数据库
转自:https://blog.csdn.net/qq_29631069/article/details/70054201 1 一、创建表 2 oracle: 3 4 create table baoxiandan ( 5 id number(20) not null, 6 fileName varchar2(200) not null, 7 content blob, 8 primary key(id) 9 ); 10 create sequence seq_baoxiandan;
1 二、Hibernate映射文件 2 3 <?xml version="1.0" encoding="utf-8"?> 4 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 5 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 6 <hibernate-mapping> 7 <class name="com.erry.tntops.acer.model.impl.CarrierImpl" 8 table="BAOXIANDAN" 9 proxy="com.erry.tntops.acer.model.Carrier"> 10 <id name="id" column="ID" type="long" unsaved-value="-1"> 11 <generator class="sequence"> 12 <param name="sequence">SEQ_BAOXIANDAN</param> 13 </generator> 14 </id> 15 <property name="fileName" column="filename" type="java.lang.String" not-null="false"> 16 <meta attribute="caption">${tntops.acer.Carrier.code}</meta> 17 </property> 18 <property name="content" column="content" type="byte[]"> 19 <meta attribute="caption">${tntops.acer.Carrier.name}</meta> 20 </property> 21 </class> 22 </hibernate-mapping>
1 三、pojo类 2 3 4 import com.erry.tntops.common.model.impl.BaseModelImpl; 5 import com.erry.tntops.acer.model.Carrier; 6 7 import java.util.Date; 8 9 /** 10 * Created by IntelliJ IDEA. 11 * User: chenyang 12 * Date: 2008-7-28 13 * Time: 17:46:32 14 * To change this template use File | Settings | File Templates. 15 */ 16 public class CarrierImpl extends BaseModelImpl implements Carrier { 17 18 private long id; 19 private String fileName; 20 private byte content[]; 21 22 public long getId() { 23 return id; 24 } 25 26 public void setId(long id) { 27 this.id = id; 28 } 29 30 public String getFileName() { 31 return fileName; 32 } 33 34 public void setFileName(String fileName) { 35 this.fileName = fileName; 36 } 37 38 public byte[] getContent() { 39 return content; 40 } 41 42 public void setContent(byte[] content) { 43 this.content = content; 44 } 45 }
1 四、Java代码 2 1、入库 3 //获得文件名,fileNamePath为文件路径变量 4 String fileName = fileNamePath.substring(fileNamePath.lastIndexOf("\\") + 1); 5 File file = new File(fileNamePath); 6 InputStream inputStream = new FileInputStream(file); 7 byte[] data = new byte[] {}; 8 data = inputStreamToByte(inputStream);//将文件保存到字节数组中 9 Carrier carrier = (Carrier) SpringContext.getBeanOfType(Carrier.class); 10 carrier.setFileName(fileName); 11 carrier.setContent(data); 12 dao.create(carrier); 13 14 //将文件保存到字节数组中 15 private byte [] inputStreamToByte(InputStream is) throws IOException { 16 ByteArrayOutputStream bAOutputStream = new ByteArrayOutputStream(); 17 int ch; 18 while((ch = is.read() ) != -1){ 19 bAOutputStream.write(ch); 20 } 21 byte data [] =bAOutputStream.toByteArray(); 22 bAOutputStream.close(); 23 return data; 24 } 25 26 2、出库 27 byte data [] = new byte[]{}; 28 File file =null ; 29 FileOutputStream fos = null; 30 InputStream in = null; 31 32 String hql = "select carrier from com.erry.tntops.acer.model.Carrier carrier where carrier.fileName=:fileName"; 33 Map map = new HashMap(); 34 map.put("fileName", fileName); 35 Collection collection = dao.retrieve(hql, map); 36 if(collection != null && collection.size() > 0){ 37 Iterator it = collection.iterator(); 38 Carrier carrier = (Carrier) it.next(); 39 data = carrier.getContent(); 40 41 } 42 //导出成文件 43 file = new File("d:\\" + fileName); 44 if (!file.exists()) { 45 file.createNewFile(); // 如果文件不存在,则创建 46 } 47 fos = new FileOutputStream(file); 48 int size = 0; 49 if (data.length > 0) { 50 fos.write(data, 0, data.length); 51 } else { 52 while ((size = in.read(data)) != -1) { 53 fos.write(data, 0, size); 54 } 55 in.close(); 56 } 57 fos.close();
转载于:https://www.cnblogs.com/sharpest/p/5987885.html
java上传文件-大文件以二进制保存到数据库相关推荐
- 多文件上传,大文件上传3、5个G,那都不是事
一套大文件上传的教程给大家. https://www.yyjcw.com/html/ke/34.html 重点讲解了多文件上传,大文件上传,分块上传,断点续传,文件秒传,上传失败自动修复再上传等功能, ...
- JAVA上传tiff格式文件
文章目录 Java上传tiff格式文件 Java上传tiff格式文件 加入pom依赖 <dependency><groupId>com.twelvemonkeys.imagei ...
- web上传zip大文件,java服务接收并解压ZIP文件
目录 一.背景 二.知识点 三.代码实现 1.依赖 2.web 代码 3. java服务端 一.背景 公司产品小伙伴画了原型后,需要上传到服务器上供开发查看:由于文件数量很多,100M左右差不多要传3 ...
- php带截切图片上传_PHP大文件切割上传并带进度条功能示例
本文实例讲述了PHP大文件切割上传并带进度条功能.分享给大家供大家参考,具体如下: 前面一篇介绍了PHP大文件切割上传功能,这里再来进一步讲解PHP大文件切割上传并带进度条功能. 项目结构图: 14- ...
- java上传和下载文件代码_JavaWeb中上传和下载文件实例代码
一丶先引入上传下载的lib 二丶上传的的servlet package com.test.action; import java.io.file; import java.io.fileoutputs ...
- php 上传过大文件,php 完美解决无法上传大文件方法
无法上传大文件是因为php.ini配置有限制了,这样限制了用户默认最大为2MB了,超过了就不能上传了,如果你确实要上传我们可以按下面方法来处理一下. 打开php.ini, 参数 设置 说明 fil ...
- java上传下载_Java文件上传与文件下载实现方法详解
本文实例讲述了Java文件上传与文件下载实现方法.分享给大家供大家参考,具体如下: Java文件上传 数据上传是客户端向服务器端上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传 ...
- java 大文件上传_JAVA大文件上传分片上传方法(附带demo)
最近在做视频上传展示的相关业务!但是因为最开始使用的是单文件上传所以一旦遇到大文件上传的速度就非常慢!为此在网上一直找寻分片的方法!得到了思路! 直接讲一下我这边看了那么多文档加上自己理解写的demo ...
- java上传过大图片超时_解决.net项目中上传的图片或者文件太大无法上传问题
最近做项目的时候 用户提出要上传大图片 一张图片有可能十几兆 本来用的第三方的上传控件 有限制图片上传大小的设置 以前设置的是2M 按照用户的要求 以为直接将限制图片上传大小的设置改下就可 ...
- java上传与下载文件_JavaWeb之实现文件上传与下载
1.什么是上传和下载? - 数据上传是指客户端向服务器上传数据,客户端向服务器发送的所有请求都属于数据上传.文件上传是数据上传的一种特例,指的是客户端向服务器上传文件.即将保存在客户端的文件上传至服 ...
最新文章
- html页面多个按钮点击事件监听事件,HTML Button.onclick 事件汇总
- DL之R-CNN:R-CNN算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略
- linux下锐捷拨号的问题
- Python工程师学习笔记
- 网易游戏2011.10.15校园招聘会笔试题
- Faster-RCNN算法精读
- 关于inet_ntop、inet_pton中的n和p分别代表的意义
- java app log4j 配置_Java-未加载log4j2配置
- windows mysql导入sql文件
- mysql中转换成字符串_如何在R中转换字符串的大小写?
- 值得关注的开源软件推荐
- 28_多易教育之《yiee数据运营系统》附录:扩展知识点汇总系列一
- 吉林大学超星MOOC学习通高级语言程序设计 C++ 实验01 顺序程序设计(2021级)
- 复现IIS PUT任意上传漏洞(过程,步骤,说明)
- 魔兽世界怀旧服服务器显示配置,魔兽世界怀旧服配置要求很高吗 魔兽世界怀旧服电脑最低配置要求...
- 怎么添加usb虚拟打印机端口_佳能LBP2900,夏普等特殊打印机使用教程
- 机器学习(1):knn算法总结
- XTUOJ-1277-Triangle
- python、pygame开发的太空大战游戏源代码
- centos memcache
热门文章
- 页面发送请求到后台报错“Empty or invalid anti forgery header token.”问题解决
- 解决Fragment重复加载问题
- 【Ubuntu16.04】解决Qt安装包(.run文件)不能用./命令执行的问题
- IIS7 应用程序池自动回收关闭的解决方案
- 触发器报错“Not allowed to return a result set from a trigger”的解决方案
- Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins问题的解决
- 移动端页面滚动穿透问题解决方案
- SpringBoot-文件在线预览解决方案-基于OpenOffice及jacob
- 有PHP4的分支吗?
- 没有tpm不能装win11的解决方法