如何用JAVA将二进制文件转换成BASE64格式保存到MySQL的Blob字段里并读出下载
来源:互联网 发布:故宫 淘宝 彩妆 编辑:程序博客网 时间:2024/06/05 09:16
由于需求要将上传的文件以BASE64的方式保存到MySQL的Blob字段,并可以读取Blob字段下载生成文件,方法如下:
1、下载用于BASE64编码转换的sun.misc.BASE64Decoder和sun.misc.BASE64Encoder的支持库(jar),放到运行库中。
2. 实现代码如下:
package com.pszx.venus;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream;import java.io.DataInputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.PrintWriter;import java.net.URLEncoder;import java.sql.Blob;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.Map;import java.util.Properties;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;import com.pszx.venus.DBConnector;import com.sun.org.apache.xml.internal.security.utils.Base64;public class upLoadFileToDB {public void upLoadFile() throws Exception{String fileName = "d:\\finish3.png";File file = new File(fileName);FileInputStream fin = new FileInputStream(file);byte[] buffer = new byte[(int)file.length()];fin.read(buffer);fin.close();DBConnector dbc = new DBConnector();Connection conn = dbc.createConn();PreparedStatement pstmt = null;conn.setAutoCommit(false);String sql = "";try{String sql1 = "update sample set fj=?, bz=? where id=1 ";pstmt = conn.prepareStatement(sql1);pstmt.setString(1, new BASE64Encoder().encode(buffer)); //将文件内容编码成base64格式后以字符串的方式保存到Blob字段中pstmt.setString(2, "wilson");pstmt.executeUpdate();conn.commit(); //从数据库中读出sql1 = "select fj from sample where id=1";pstmt = conn.prepareStatement(sql1);ResultSet rs = pstmt.executeQuery();byte[] binfl = null; while(rs.next()){Blob b = rs.getBlob("fj"); //从Blob字段中读出base64格式的内容byte[] ba = b.getBytes(1, (int)b.length());binfl = Base64.decode(ba); //将base64格式解码 }String fileName1= "d:\\finish4.png";File file1 = new File(fileName1);FileOutputStream fout = new FileOutputStream(file1);fout.write(binfl); //将解码后的内容写入文件fout.close();}finally{pstmt.close();conn.close();dbc.disConnect();}}public static void main(String[] args) throws Exception{upLoadFileToDB lf = new upLoadFileToDB();lf.upLoadFile();}}
阅读全文
0 0
- 如何用JAVA将二进制文件转换成BASE64格式保存到MySQL的Blob字段里并读出下载
- 如何用java更新oracle的blob字段
- android开发如何用file读出sdcard中含图片的文件夹,并将文件夹显示到listview上????
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中.
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- 将网络中的图片存为NSData并保存到sqlite的BLOB字段中
- 如何用jQuery将辅助信息合并到二进制文件里一起上传到WCF
- C#将文件保存到Oracle的BLOB字段
- 如何用SQL操作oracle的blob字段里的字符串数据!
- 下载blob并保存到文件
- 采用struts2+hibernate实现保存文件到Oracle数据库&&并附下载代码【导入即可用】;数据库中保存blob类型的二进制文件
- c++里如何用string将中文编码的数字,字母转换成char类型
- 用Java 将图片存入Mysql 并读出的方法
- 将Oracle中Blob字段存储的图片转换成字节流直接输出到浏览器
- base64格式的图片转换成图片并保存(ASP.NET)
- angularjs上传图片并转换成base64保存到数据库
- 数据库保存为BLOB字段,将blob转换为list,list转换为blob
- 【Angular】radio选项如何确定是否选中,唯一性选中
- 编码问题(QT、C++)
- 工厂模式之工厂方法模式
- Java二分查找(代码帖)
- HDU 1232
- 如何用JAVA将二进制文件转换成BASE64格式保存到MySQL的Blob字段里并读出下载
- TLS/SSL 协议详解 (9) Client hello
- oracle startup 报ORA-00119错的解决方法
- RAC 环境中 gc block lost 和私网通信性能问题的诊断 (文档 ID 1674865.1)
- 快速上手seajs——简单易用Seajs
- live555 源码分析:RTSPServer 组件结构
- window.close()无效
- 基本组件显示与否问题
- JSP能往数据库中写入数据无法修改数据的解决办法