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> ...
随机推荐
- Generate input file for OVITO
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- IE浏览器打开chorme浏览器,如何打开其他浏览器
看到这个标题是否感觉奇怪,为什么要用IE浏览器打开chorme或者火狐浏览器等,这个功能从开发者来说不是一个好的需求,但确实是真实存在的,有用公司的背景历史比较复杂,而且公司有过长期的开发历史,这导致 ...
- pl/sql里的exists和in的差别
项目中有个需要需要如下pl/sql(数据库是MariaDB) ) AS small FROM cmp_ent_main a WHERE createTime<'2016-9-21' ,,) ) ...
- 学习RBAC 用户·角色·权限·表
- 使用JAVA编写电话薄程序,具备添加,查找,删除等功能
//该程序需要连接数据库.根据word文档要求所有功能均已实现.//大部分方法基本差不多,//在查询修改的时候能输出 最大ID号 和最小ID号,并且可以对输入的ID号进行判断是否存在(具体方法请查看 ...
- Android 裁剪图片为圆形图片
转自http://blog.csdn.net/kkmike999/article/details/16359713 /** * 转换图片成圆形 * * @param bitmap * 传入Bitmap ...
- 数据可视化-EChart2.0使用总结2
接上一篇博客,这篇博客主要讨论EChart里面的散点图.气泡图和雷达图. 4.散点图-Scatter Chart 适合场景:三维数据集,但是只有两个维度需要比较.比较的是X轴和Y轴的数据,第三个数 ...
- ES6 - Note3:数组、对象与函数的扩展
一.数组的扩展,ES6在数组扩展了一些API,以实现更多的功能 1.Array.from:可以将类数组和可遍历的数据结构转换成真正的数组,如下所示 var a = { '0':1,'1':1,leng ...
- geotrellis使用(十三)数据导入BUG解决方案说明
Geotrellis系列文章链接地址http://www.cnblogs.com/shoufengwei/p/5619419.html 目录 前言 BUG说明 解决方案 总结 一.前言 ...
- Full Gc经历分析
背景: 个别机器:内存突然上升,cpu利用率升高. 解决过程 1. jmap dump整个内存镜像 2. 整个文件700多M,使用Jhat打不开 3. 换heapanalyzer,能打开,但没有分析出 ...