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保存文件到数据库的更多相关文章

  1. PHP 合理配置实现文件上传及保存文件到数据库

    合理配置 php.ini 如何配置php.ini实现PHP文件上传功能.其中涉及到php.ini配置文件中的upload_tmp_dir.upload_max_filesize.post_max_si ...

  2. python保存文件到数据库

    效果 model class WEIGUI_IMG(Base): __tablename__ = 'DW_ZHS_D_WEIGUI_IMG' # 表名 id = Column(), primary_k ...

  3. C# 保存文件到数据库

    html <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="FileUploa ...

  4. JAVA上传文件到数据库

    前端代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> &l ...

  5. 无废话Android之android下junit测试框架配置、保存文件到手机内存、android下文件访问的权限、保存文件到SD卡、获取SD卡大小、使用SharedPreferences进行数据存储、使用Pull解析器操作XML文件、android下操作sqlite数据库和事务(2)

    1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name= ...

  6. PostgreSQL.conf文件配置详解[转]

    一.连接配置与安全认证 1.连接Connection Settings   listen_addresses (string) 这个参数只有在启动数据库时,才能被设置.它指定数据库用来监听客户端连接的 ...

  7. 小型单文件NoSQL数据库SharpFileDB初步实现

    小型单文件NoSQL数据库SharpFileDB初步实现 我不是数据库方面的专家,不过还是想做一个小型的数据库,算是一种通过mission impossible进行学习锻炼的方式.我知道这是自不量力, ...

  8. redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题

    先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...

  9. EXECL文件导入数据库

    Execl数据导入数据库: 注意事项:execl中的列名与列数要与数据库的列名和列数一致.值类型一致,列名不一致的话可在导入的时候,给字段起别名,确定保持一致 v 界面代码: <div> ...

随机推荐

  1. Opengl中矩阵和perspective/ortho的相互转换

    Opengl中矩阵和perspective/ortho的相互转换 定义矩阵 Opengl变换需要用四维矩阵.我们来定义这样的矩阵. +BIT祝威+悄悄在此留下版了个权的信息说: 四维向量 首先,我们定 ...

  2. java.io.IOException: invalid header field

    通过本文, 我们明白了什么是 jar的清单文件 MANIFEST.MF, 简单示例: E:\ws\Test\WEB-INF\classes>jar cvfm testCL.jar ListTes ...

  3. 前端构建工具gulpjs的使用介绍及技巧

    gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速 ...

  4. Android第一天

    ---恢复内容开始--- 一.配置JDK 第一步:右键我的电脑-属性-高级系统设置-环境变量 输入变量名和变量值: 环境变量名和变量值: 变量名:JAVA_HOME 变量值:D:\Java\jdk1. ...

  5. fir.im Log Guru 正式开源,快速找到 iOS 应用无法安装的原因

    很开心的宣布 Log Guru 正式开源! Log Guru,是 fir.im 开发团队创造的小轮子,用在 Mac 电脑上的日志获取,Github 地址:FIRHQ/LogGuru. Log Guru ...

  6. JavaScript易错点

    JavaScript知识点1.变量作用域   var a = 1;function test() {    var a = 2;     console.log(a); // 2} test();   ...

  7. java继承、抽象和接口

    package zdbExtends;public class Grandparent {        public Grandparent(){                System.out ...

  8. c#方法

    1.引用型参数: 关键字:ref 2.输出型参数 关键字:out 例: double area(out double p) { double t=3.14*10; p=2*t*3.14; return ...

  9. DAC Usage3:Monitor Data-tier Applications

    If you deploy a DAC to a managed instance of the Database Engine, information about the deployed DAC ...

  10. 网站初步收工---www.dkill.net

    今天10.30左右备案核审成功了,然后一天都在忙部署和一些其他的东西,中途也写了很多文档,遇到很多问题,直接琢磨了N久,暂时发了这么多教程,明天揭露阿里云的各种坑(先用winServer服务器,有时间 ...