PostgreSQL保存文件到数据库
1.CREATE TABLE public.t_file (
id INTEGER PRIMARY KEY NOT NULL DEFAULT nextval('t_file_id_seq'::regclass),
file_name CHARACTER VARYING(100),
content BYTEA,
create_date DATE
);
CREATE UNIQUE INDEX t_file_id_uindex ON t_file USING BTREE (id);
2.public class FileUpload {
private Integer id;
private String fileName;
private byte[] content;
private Date createDate;
}
3.<resultMap id="BaseResultMap" type="com.hsmdata.probe.base.model.FileUpload">
<id column="id" property="id" jdbcType="INTEGER"/>
<result column="file_name" property="fileName" jdbcType="VARCHAR"/>
<result column="content" property="content" jdbcType="BINARY"/>
<result column="create_date" property="createDate" jdbcType="DATE"/>
</resultMap>
4.@RequestMapping("/upload2")
@ResponseBody
protected void upload2(HttpServletRequest request,
HttpServletResponse response) throws IOException { MultipartResolver resolver = new CommonsMultipartResolver(request.getSession().getServletContext());
if (resolver.isMultipart(request)) {
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; //接收文件
MultipartFile documentFile = multipartRequest.getFile("myfiles");
List<MultipartFile> multipartFileList = multipartRequest.getFiles("myfiles"); //传回所有文件输入类型的名称
Iterator<String> files = multipartRequest.getFileNames();
String fileName = "";
String originalFilename = "";
String realPath = request.getSession().getServletContext().getRealPath("/upload");
while (files.hasNext()) {
fileName = (String) files.next();
System.out.println("FileName============" + fileName);
//用此方法得到上传文件的真正的文件名,这里的fileName指文件输入类型的名称
MultipartFile myfile = multipartRequest.getFile(fileName);
originalFilename = myfile.getOriginalFilename(); System.out.println("文件原名: " + originalFilename);
System.out.println("文件名称: " + myfile.getName());
System.out.println("文件长度: " + myfile.getSize());
System.out.println("文件类型: " + myfile.getContentType());
System.out.println("========================================");
try {
//这里不必处理IO流关闭的问题,因为FileUtils.copyInputStreamToFile()方法内部会自动把用到的IO流关掉
//此处也可以使用Spring提供的MultipartFile.transferTo(FileMapper dest)方法实现文件的上传
// FileUtils.copyInputStreamToFile(myfile.getInputStream(), new File(realPath, originalFilename));
byte[] data = new byte[]{};
data = inputStreamToByte(myfile.getInputStream());
if (data == myfile.getBytes()) {
System.out.println("相等。。。。");
}
FileUpload file = new FileUpload();
file.setFileName(originalFilename);
file.setContent(data);
file.setCreateDate(new Date());
fileService.insert(file); } catch (IOException e) {
System.out.println("文件[" + originalFilename + "]上传失败,堆栈轨迹如下");
e.printStackTrace();
}
} //设置响应给前台内容的PrintWriter对象
PrintWriter out = response.getWriter();
//返回结果
JSONObject obj = new JSONObject();
obj.put("fileName", originalFilename);
out.print(obj.toJSONString());
}
} //将文件保存到字节数组中
private byte[] inputStreamToByte(InputStream is) throws IOException {
ByteArrayOutputStream bAOutputStream = new ByteArrayOutputStream();
int ch;
while ((ch = is.read()) != -1) {
bAOutputStream.write(ch);
}
byte data[] = bAOutputStream.toByteArray();
bAOutputStream.close();
return data;
}
5.@RequestMapping(value = "get", method = RequestMethod.GET)
@ResponseBody
protected String get(Integer id) throws IOException {
FileUpload f = fileService.select(id);
byte[] data = f.getContent();
String fileName = f.getFileName();
FileOutputStream fos = null;
InputStream in = null;
//导出成文件 File file = new File("d:\\" + fileName);
if (!file.exists()) {
file.createNewFile(); // 如果文件不存在,则创建
}
fos = new FileOutputStream(file);
int size = 0;
if (data.length > 0) {
fos.write(data, 0, data.length);
} else {
while ((size = in.read(data)) != -1) {
fos.write(data, 0, size);
}
in.close();
}
fos.close();
return "d:\\" + fileName;
}
PostgreSQL保存文件到数据库的更多相关文章
- PHP 合理配置实现文件上传及保存文件到数据库
合理配置 php.ini 如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_si ...
- python保存文件到数据库
效果 model class WEIGUI_IMG(Base): __tablename__ = 'DW_ZHS_D_WEIGUI_IMG' # 表名 id = Column(), primary_k ...
- C# 保存文件到数据库
html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploa ...
- JAVA上传文件到数据库
前端代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> &l ...
- 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...
- PostgreSQL.conf文件配置详解[转]
一.连接配置与安全认证 1.连接Connection Settings listen_addresses (string) 这个参数只有在启动数据库时,才能被设置.它指定数据库用来监听客户端连接的 ...
- 小型单文件NoSQL数据库SharpFileDB初步实现
小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...
- redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题
先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...
- EXECL文件导入数据库
Execl数据导入数据库: 注意事项:execl中的列名与列数要与数据库的列名和列数一致.值类型一致,列名不一致的话可在导入的时候,给字段起别名,确定保持一致 v 界面代码: <div> ...
随机推荐
- Docker+nginx+tomcat7配置简单的负载均衡
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng/p/4995513.html 本文介绍在Docker上配置简单的负载均衡,宿主机为Ubuntu 14.04.2 ...
- 前nginx后Apache+Node反向代理
前几天一直在被一个问题困扰,机器上跑的站点太多了,Apache上面有十几个,NodeJS的也有一堆,记端口号都要烦死,于是萌生了使用反向代理的想法.出发点貌似太low了,完全不是出于负载均衡.高并发什 ...
- PHP中的list()说明
list() 用于在一次操作中给一组变量赋值. 注释:list()只用于数字索引的数组,且假定数字索引从 0 开始. 说明 list() 用数组中的元素为一组变量赋值. 注意,与 array() 类似 ...
- HTML5新增标签与属性
目录 一.HTML5新增属性 1.1.contextmenu 1.2.contentEditable 1.3.hidden 1.4.draggable 1.5.data-* 1.6.placehold ...
- 轻量级前端MVVM框架avalon - 执行流程2
接上一章 执行流程1 在这一大堆扫描绑定方法中应该会哪些实现? 首先我们看avalon能帮你做什么? 数据填充,比如表单的一些初始值,切换卡的各个面板的内容({{xxx}},{{xxx|html}}, ...
- 针对格式文件,Python读取一定大小的文件内容
由数据库导出的数据是格式化数据,如下所示,每两个<REC>之间的数据是一个记录的所有字段数据,如<TITLE>.<ABSTRACT>.<SUBJECT_COD ...
- VS2013中web项目中自动生成的ASP.NET Identity代码思考
vs2013没有再分webform.mvc.api项目,使用vs2013创建一个web项目模板选MVC,身份验证选个人用户账户.项目会生成ASP.NET Identity的一些代码.这些代码主要在Ac ...
- sublime text学习
Ctrl + / ---------------------注释 Ctrl + 滚动 --------------字体变大/缩小 Ctrl + N-------------------新建 软件右下 ...
- 快速搭建php环境
WAMP:在windows系统下搭建PHP开发环境 APPSERVER: 两种可用于开发环境的,一般用WAMP LAMP构架 Linux系统 Apache服务器管理软件 Mysql数据库 php语言 ...
- 认识AMD、CMD、UMD、CommonJS
0.导言 JavaScript的生态系统一直在稳步增长,当各种组件混合使用时,就可能会发现不是所有的组件都能“和平共处”,为了解决这些问题,各种模块规范就出来了. 1.AMD(Asynchromous ...