file类型需要转换为byte[],ibatis可以直接将byte[]类型存储进blob
`package com.yinhai.team.action;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import javax.servlet.ServletContext;
import org.apache.commons.io.FileUtils;
import org.apache.struts2.ServletActionContext;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Namespace;
import org.apache.struts2.convention.annotation.Result;
import com.opensymphony.xwork2.ActionContext;
import com.yinhai.sysframework.dto.ParamDTO;
import com.yinhai.team.service.StaffTechTreeService;
import com.yinhai.webframework.BaseAction;
@Namespace(“/team”)
@Action(value = “uploadAction”, results = { @Result(name = “success”, location = “/kfzgl/team/upload.jsp”) })
public class UploadAction extends BaseAction {
private StaffTechTreeService staffTechTreeService = (StaffTechTreeService) getService(“staffTechTreeService”);
private File files;// 对应的就是表单中文件上传的那个输入域的名称,Struts2框架会封装成File类型的
private String filesFileName;// 上传输入域FileName 文件名
private String filesContentType;// 上传文件的MIME类型
public String execute() {
return SUCCESS;
* 上传文件
* @return
* @throws Exception
public String testUplod() throws Exception {
System.out.println(filesContentType);
try {
ServletContext sc = ServletActionContext.getServletContext();
String storePath = sc.getRealPath("/files");
FileUtils.copyFile(files, new File(storePath, filesFileName));
ActionContext.getContext().put("message", "上传成功!");
} catch (Exception e) {
setMsg("下载失败", "error");
e.printStackTrace();
FileInputStream fi = readImage(files);
byte a[] = null;// **将测试文件test.doc读入此字节数组
ParamDTO dto = getDto();
dto.put("id", "14");
int len = (int) files.length();
a = new byte[len];
int i = 0;
int itotal = 0;
// 将文件读入字节数组
for (; itotal < len; itotal = i + itotal) {
i = fi.read(a, itotal, len - itotal);
fi.close();
dto.put("content", a);
staffTechTreeService.insertTest(dto);
return JSON;
public File getFiles() {
return files;
public void setFiles(File files) {
this.files = files;
public String getFilesFileName() {
return filesFileName;
public void setFilesFileName(String filesFileName) {
this.filesFileName = filesFileName;
public String getFilesContentType() {
return filesContentType;
public void setFilesContentType(String filesContentType) {
this.filesContentType = filesContentType;
* 得到blob文件
* @return
* @throws IOException
* @throws SQLException
@SuppressWarnings("unchecked")
public String getBlob() throws IOException, SQLException {
ParamDTO dto = getDto();
dto.put("id", "14");
List<Map<String, Object>> list = getDao().queryForList("stafftechtree.ghlx_document_sel", dto);
Blob blob = (Blob) list.get(0).get("content");
OutputStream op = new FileOutputStream(new File("d:\\song\\a.jpg"));
op.write(blob.getBytes(1, (int) blob.length()));
op.close();
return JSON;
* 将文件转换为二进制流
* @throws FileNotFoundException
public FileInputStream readImage(File file) throws FileNotFoundException {
return new FileInputStream(file);
* 获取文件的Base64
* @param file {File} 文件
* @param callback {Function} 回调函数,参数为获取到的base64
function fileToBase64(file, callback) {
const fileReader = new FileReader()
fileReader.read
记录一下比较常见的图片格式(File、Blob、base64)在不同的场景他们之间的相互转换的方法。BlobBLOB(binary large object): 二进制大对象,是一个可以存储二进制文件的容器。在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型。属性名称读/写描述size只读Blob 对象中所包含数据的大小(字节)。type只读一个字符串,表明该Blob对象所包含数据的MIME类型。如果类型未知,则该值为空字符串。例如 “image/png”File。
base64、file和blob用JS进行互转的方法大全【前端】,作为前端项目开发,经常会遇到图片文件的处理,下面总结一下关于 Base64、File对象和Blob 的相互转换大全。包括:file 对象转 base64、base64 直接转换为 file、base64 转换成 blob、blob 转换为 file
1:先往表中插入数据,insert into tablename (BLOB字段名) values(empty_blob())
2:取出BLOB写入文件在更新到数据库
if (result.next()) {
BLOB blob = (BLOB) result.getBlob("BLOB字段名");
OutputStream out = blob....
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.sql.Blob;import java.sq...
我们在《如何在浏览器中处理二进制数据?》这一篇中提到了Blob对象。?? Blob 是 Binary Large Object 的缩写,Blob 对象表示一个不可变、原始数据的类文件对象。实际上这是一个从ES5开始就逐步被浏览器支持的特性,它让我们能够比较方便地处理文件式的二进制数据。Blob对象被浏览器“视同文件”。一个最直接的应用例子是,当我们需要在网页中预览本地图片时,我们不必将图...
readAsBinaryString(Blob| File) :返回二进制字符串
readAsText(Blob | File,opt_encoding):返回文本字符串
readAsDataURL(Blob | File) : 返回一个基于base64 编码的data-uri 对象
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.sql.Blob;import java.sq...
准备先把以前写的持久层及表示层框架写完再写loonframework-game包(实际上是想自己业余建站用,用现成的框架太无聊,重复发明轮子的最大意义就在于解闷……),在2005年时写过一个开头,由于自己没有整理文档,现在拿起来就觉得代码很乱,又懒于写文档,于是把一些心得类的东西整理一下,用以备忘。在此持久层框架中,我将持久化过程分为两个松耦合模块,第一模块封装jdbc操作,隐藏Connectio