1、 以下代码为上传文件到数据库存为字节字段
package com.ckl.test;
/**
* @author chenkailin
* @date 2020-08-26 21:02
*/
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
/**
* mysql或者postgresql进行文件的数据库上传
*/
public class test {
public static void main(String[] args) {
try {
String fileNamePath = "C:\\Users\\ckl\\Desktop\\test.sql";
FileInputStream fis = new FileInputStream(fileNamePath);
String fileName = fileNamePath.substring(fileNamePath.lastIndexOf("\\") + 1);
byte[] filebyte = inputSwitchByte(fis);
// Class.forName("org.postgresql.Driver");
// Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "root", "root");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
PreparedStatement pstmt = null;
/*
create table myfile( name varchar(20),file bytea );//postgresql创建表
create table myfile( name varchar(20),file blob );//mysql创建表
*/
pstmt = con.prepareStatement("insert into myfile(name,file) values(?,?)");
pstmt.setString(1, fileName);
pstmt.setBytes(2, filebyte);
pstmt.executeUpdate();
System.out.println("文件上传到数据库成功.");
fis.close();
con.close();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
}
}
/*
文件转为字节
*/
public static byte[] inputSwitchByte(InputStream input){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int len = 0;
byte[] result = null;
byte[] bt = new byte[2048];
try {
while( (len=input.read(bt)) != -1){
baos.write(bt, 0, len);
}
result = baos.toByteArray();
baos.close();
input.close();
} catch (IOException e) {
System.out.print("IO操作失败");
}finally{
if (null != baos) {
try {
baos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != input) {
try {
input.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return result;
}
}
2、以下为获取数据库数据,进行文件的下载
package com.ckl.test;
/**
* @author chenkailin
* @date 2020-08-26 21:02
*/
import java.io.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
*mysql或者postgresql从数据库进行文件的下载
*/
public class test2 {
public static void main(String[] args) {
try {
// Class.forName("org.postgresql.Driver");
// Connection con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/test", "root", "root");
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
/*
create table myfile( name varchar(20),file bytea );//postgresql创建表
create table myfile( name varchar(20),file blob );//mysql创建表
*/
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("select * from myfile");
byte[] data = null;
String fileName = "";
while(rs.next()){
data = rs.getBytes("file");
fileName = rs.getString("name");
}
rs.close();
File file = new File("d:\\" + fileName);
if (!file.exists()) {
file.createNewFile(); // 如果文件不存在,则创建
}
FileOutputStream fos = new FileOutputStream(file);
InputStream in = null;
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();
con.close();
stmt.close();
System.out.println("从数据库下载文件成功");
} catch (Exception e) {
e.printStackTrace();
}
}
}
亲测成功的,如有问题请留言