广告
返回顶部
首页 > 资讯 > 精选 >spring+hibernate文件上传并放入大字段怎么实现
  • 391
分享到

spring+hibernate文件上传并放入大字段怎么实现

2023-06-03 02:06:47 391人浏览 八月长安
摘要

本篇内容介绍了“spring+hibernate文件上传并放入大字段怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先准备SPRIN

本篇内容介绍了“spring+hibernate文件上传并放入大字段怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

首先准备SPRING 框架,HIBERNATE 框架,common-file_upload.jar包。

当然了不能忘记数据库JDBC驱动的jar。这里是oracle 就用了class12.jar
这里采用了Oracle 数据库,在WEBroot下建立一个fileupload目录。以便放上传来的文件。
等等。。
既然用了Srping 框架,那就要翻翻Srping 手册,他对文件上传的支持。Spring 由内置的multipart包中的插件对象
MultipartResovler 来完成的。Spring 提供MultipartResovler可以支持Commons FileUpload(Http://jakarta.apache.org/commons/fileupload)
和Cos FileUpload(http://www.servlet.com/cos)所以刚开始还要准备一个common-file_upload.jar。
缺省,Spring 是没有multipart 处理。所以要用multipart处理需要在web应用的上下文加上multipart 解析器。然后你的请求中包含multipart,在上下文
定义的MultipartResolver就会解析他,这样,你请求中的multipart属性就会像其他属于一样被处理。

请看下面:
<!--使用common-file_upload.jar的调用方法--&gt

<!--使用Cos FileUpload的调用方法

--&gt

       1048576   


       4096

所以,需要准备cos.jar或者common-file_upload.jar。
接下来在一个表单中处理multipart;
这时候我们准备一个代文件域的表单
file.jsp:

文件上传:
     

 

文件注释:
   

   


我们将上面的URL映射到控制器上,已经处理bean 的控制器本身。

org.vincent.FileUploadBean
file.jsp

然后创建控制器和含有文件属性的bean。
FileUploadBean.java
public class FileUploadBean {
private byte[] file;

public byte[] getFile() {
 return file;
}

public void setFile(byte[] file) {
 this.file = file;
}
}

UploadFileCtrl.java
public class UploadFileCtrl extends SimpleFORMController {
protected ModelAndView onSubmit(httpservletRequest request,
  HttpServletResponse response, Object arg2, BindException arg3)
  throws Exception {
 // TODO Auto-generated method stub
 FileUploadBean bean = (FileUploadBean) arg2;
 byte[] bytes = bean.getFile();//到这步的时候Spring 已经把文件传到内存当中了。

// cast to multipart file so we can get additional information
 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
 CommonsMultipartFile file = (CommonsMultipartFile) multipartRequest
   .getFile("file");
               //判断是否有文件被上传,如果有,就把文件放入数据库或者是服务器上的硬盘里。
 if (bytes.length!=0) {
                       String path = request.getRealPath("/fileupload/");
  File dirPath = new File(path);
  if (!dirPath.exists()) {
   dirPath.mkdirs();
  }
 
                //以下是存放入服务器硬盘上。
                        String filename=path+file.getName();
  File uploadedFile = new File(filename);
  FileCopyUtils.copy(bytes, uploadedFile);
  System.out.println("********************************");
  System.out.println(uploadedFile.getAbsolutePath());
  System.out.println(bytes.length);
  System.out.println("********************************");
 }
 return new ModelAndView("file.jsp");
}

protected void initBinder(HttpServletRequest request,
  ServletRequestDataBinder binder) throws ServletException {
 binder.reGISterCustomEditor(byte[].class,
   new ByteArrayMultipartFileEditor());
}
}

如果只是存放在服务器硬盘上,那么到这一步算是结束了。但是如果你要放在BLOB大字段中,,继续往下走。
(这里就不讨论一些基本的HIBERNTAE配置和SPRING 配置。如有不明白去看这两个的文档)

创建一个uploadfile表映射。
表结构如下
uuid varchar2 32
file blob

uploadfile.hbm.xml:


PO文件如下:
UploadFilePO:
public class UpLoadPicPO extends AbstractPO{

private String id;
private byte[] file;
public byte[] getFile() {
 return image;
}
public void setFile(byte[] file) {
 this.file = file;
}
public String getId() {
 return id;
}
public void setId(String id) {
 this.id = id;
}
}

Lob字段处理的配置:
我们前面已经指出Oracle的Lob字段和一般类型的字段在操作上有一个明显的区别--那就是你必须首先通过Oracle的empty_blob()/empty_clob()初始化Lob字段,
然后获取该字段的引用,通过这个引用更改其值。所以要完成对Lob字段的操作,Hibernate必须执行两步数据库访问操作,先Insert再Update。
使用BlobByteArrayType字段类型后,为什么我们就可以象一般的字段类型一样操作Blob字段呢?可以确定的一点是:BlobByteArrayType不可能逾越Blob天生的操作方式,
原来是BlobByteArrayType数据类型本身具体数据访问的功能,它通过LobHandler将两次数据访问的动作隐藏起来,使Blob字段的操作在表现上和其他一般字段业类型无异,
所以LobHandler即是那个"苦了我一个,幸福十亿人"的那位幕后英雄。
LobHandler必须注入到Hibernate会话工厂sessionFactory中,因为sessionFactory负责产生与数据库交互的Session。LobHandler的配置如代码

 
 /WEB-INF/classes/config/hibernate_oa.cfg.xml


<!--
    这里我采用了c3p0为连接池。如果是其他的还可以选择。
如果是用dataSource则使用。
   
或则还有其他的连接池,等等。
--&gt

这样配置好以后,就能在UploadFileCtrl.java里就能去掉,就这么简单。。方便吧。。哈哈哈!!!

要从大字段里做下载也很简单啊。看下面代码。

protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception {
 // TODO Auto-generated method stub
 response.setContentType("application/x-msdownload");

  UpLoadPicPO po = (UpLoadPicPO)dao.get(UpLoadPicPO.class);//这里我只是简略的写了下,意思大家都明白。
  byte[] bytes = po.getFile();
  ServletOutputStream sos = response.getOutputStream();
  sos.write(bytes);
  sos.close();
 return null;
}

“spring+hibernate文件上传并放入大字段怎么实现”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: spring+hibernate文件上传并放入大字段怎么实现

本文链接: https://www.lsjlt.com/news/232265.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • spring+hibernate文件上传并放入大字段怎么实现
    本篇内容介绍了“spring+hibernate文件上传并放入大字段怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先准备SPRIN...
    99+
    2023-06-03
  • golang大文件上传怎么实现
    在Go语言中,可以使用`net/http`包来实现大文件上传。下面是一个简单的示例: package main import ( ...
    99+
    2023-10-26
    golang
  • Node.js+express怎么实现上传大文件
    这篇“Node.js+express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js+expr...
    99+
    2023-06-17
  • 怎么用Vue+NodeJS实现大文件上传
    本文小编为大家详细介绍“怎么用Vue+NodeJS实现大文件上传”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用Vue+NodeJS实现大文件上传”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。常见的文件上传...
    99+
    2023-06-30
  • Node.js怎么实现上传大文件功能
    本篇内容主要讲解“Node.js怎么实现上传大文件功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Node.js怎么实现上传大文件功能”吧!对于大文件的上传我们首先要引入一个叫做 multer...
    99+
    2023-07-04
  • Node.js和express怎么实现上传大文件
    这篇“Node.js和express怎么实现上传大文件”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Node.js和expr...
    99+
    2023-07-04
  • php上传大文件进度条怎么实现
    要实现PHP上传大文件的进度条,可以使用以下步骤:1. 在HTML中创建一个文件上传表单,设置`enctype="multipart...
    99+
    2023-10-11
    php
  • el-upload大文件切片上传怎么实现
    这篇文章主要介绍“el-upload大文件切片上传怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“el-upload大文件切片上传怎么实现”文章能帮助大家解决问题。html<el-upl...
    99+
    2023-07-05
  • 怎么用Spring Cloud Feign实现文件上传下载
    这篇“怎么用Spring Cloud Feign实现文件上传下载”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看...
    99+
    2023-06-29
  • Vue+Node怎么实现大文件上传和断点续传
    本篇内容介绍了“Vue+Node怎么实现大文件上传和断点续传”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!源代码断点续传、分片上传、秒传、重...
    99+
    2023-06-30
  • 使用Spring MVC怎么实现文件上传和下载
    这期内容当中小编将会给大家带来有关使用Spring MVC怎么实现文件上传和下载,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。文件上传导入主要依赖<!--文件上传--><dependen...
    99+
    2023-06-14
  • JavaScript怎么实现大文件分片上传处理
    这篇文章主要介绍“JavaScript怎么实现大文件分片上传处理”,在日常操作中,相信很多人在JavaScript怎么实现大文件分片上传处理问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript怎...
    99+
    2023-06-20
  • java高并发文件上传下载怎么实现
    实现高并发的文件上传下载可以通过以下几个步骤: 使用多线程或线程池:可以使用多个线程或线程池来处理文件上传下载请求,每个线程负责...
    99+
    2023-10-27
    java
  • 利用Spring MVC怎么实现一个文件上传功能
    本篇文章给大家分享的是有关利用Spring MVC怎么实现一个文件上传功能,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。使用Spring MVC 上传文件必须配置文件解析器,如...
    99+
    2023-05-31
    springmvc 一个文件
  • vue怎么实现大文件分片上传与断点续传送
    本文小编为大家详细介绍“vue怎么实现大文件分片上传与断点续传送”,内容详细,步骤清晰,细节处理妥当,希望这篇“vue怎么实现大文件分片上传与断点续传送”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。问题:前段时间...
    99+
    2023-07-02
  • vue+element-ui+axios多文件上传怎么实现并显示整体进度
    今天小编给大家分享一下vue+element-ui+axios多文件上传怎么实现并显示整体进度的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一...
    99+
    2023-06-29
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作