java 将上传文件以二进制流保存在数据库表中的某个字段,怎么做啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 将上传文件以二进制流保存在数据库表中的某个字段,怎么做啊?相关的知识,希望对你有一定的参考价值。

当我选择一个文件,并且点上传,让它自动将这个文件,保存到oracle数据库,我的那个表的一个blog字段中。

不知道怎么做,好郁闷啊!
当一点上传,把选择的那个文件,可以是文本,可以是视频,反正什么都可以是,怎么保存到message表的text字段呢?这个字段是blob类型。求这个点击方法!详细注释下啊,谢谢啦,还有下载方法,怎么判断有附件?是否是text不为空就可以确定有?怎么下载?

楼主这是个不好的思路,不要把数据库当成“垃圾桶”,什么东西都往里扔,你应该在这个字段里存储你存放文件的信息,另外在本地文件夹里存放图片,视频之类大数据量的文件。
对一般大字段文件,采用字节流读取存储,底下是个读取的代码
Reader reader = rs.getCharacterStream("details");
StringBuffer strBuf = new StringBuffer();
if(reader!=null)
BufferedReader bufReader = new BufferedReader(reader);
String line;
while ((line = bufReader.readLine()) != null)
strBuf.append(line);
strBuf.append("\r\n");

bufReader.close();


判断是否有附件,你既然存储了路径,用File类的exist的方法就可以判断是否有该文件存在。。。。
参考技术A 我是用apache的commons-fileupload-1.2.1组件做的,通过表单收集数据.
其实text只是传了一个路径path给了服务器,服务器通过传过去的path来读取你上传的附件(用的是文件输入/输出流),所以只需要判断传过来的path是否存在就可以了(file.exists()方法可行)。
fileupload组件对数据流的格式化进行了封装,FileUploadServlet.parse(HttpRequest request)的方法可以从请求头中获得你的上传的数据流,保存过程就简单了。详细的请上网搜索关键字:apache fileupload。一定能找到你想要的资料。

上传文件至数据库并下载

在FineReport中,会出现希望直接将txt、excel等文件整个保存在数据库中进行备份,并且希望通过FineReport制作报表将这些文件下载下来的情况。

上传:使用文件控件上传文件,以二进制流保存至数据库字段中(字段类型必须是用于保存二进制数据的);

下载:直接将二进制数据拖入单元格,设置单元格的其他属性>用下载链接显示二进制内容,就可以下载文件。

下面通过上传一个txt文件至sql server数据库中并下载为例来说明实现过程。Sqlite数据库仅支持上传,不支持下载的。

前提准备

准备一个txt文件,数据库中创建一张数据库表file,包含字段(filename[文本]、file[Blob对象])

数据库不同可以保存文件的字段类型是不同的,以下列出常用数据库保存二进制数据的字段类型:

 技术分享

上传文件至数据库

  • 模板制作

前提准备好后,就可以制作一张填报模板,上传文件到数据库,文件以二进制数据流保存在数据库字段中,模板设计界面如下,并按照图上说明设置报表填报属性:

 技术分享

如果是单文件上传,则可严格控制,勾选只支持单文件上传,还可以设置允许上传的文件类型;如果是多文件上传,就不需要勾选只支持单文件上传这个勾选项了。

  • 上传提交

保存模板,进行填报预览,上传文件并提交,文件就会以二进制数据保存到数据库中:

鼠标移至文件控件所在单元格,即B2,单击右上角的编辑按钮,进入编辑状态,点击上传按钮即可上传文件,如下图:

 技术分享

技术分享

技术分享

提交成功之后,在数据库中可以看到数据。

下载

重新打开模板,添加数据库查询ds1,SQL语句为select *from file,将保存的数据查询出来;将字段拖入到单元格中,并设置文件字段所在单元格的其他属性>用下载链接显示二进制内容,并设置下载后的文件名:

 技术分享

再次保存模板,填报预览,就可以点击下载了:

技术分享


以上是关于java 将上传文件以二进制流保存在数据库表中的某个字段,怎么做啊?的主要内容,如果未能解决你的问题,请参考以下文章

上传文件至数据库并下载

记一次从Sql Server中图片二进制流还原回图片的开发过程

使用JAVA以二进制流的方式将图片存到MYSQL数据库中怎么存详细一点!谢谢!

Java 如何使用输入流和输出流 将txt文件中的某一行数据删除?

如何将上传的图像保存到 MongoDB 集合并检索它

java怎么数据库中的二进制转换成图片类型