1.数据库炫耀两张表,SYS_ATTACHMENT(存放附件内容)和SYS_ATTACHMENTBUSINESSRELATION(存放附件和业务内容相关)。定义如下:
create table SYS_ATTACHMENT
(
eventid VARCHAR2(50),
filename VARCHAR2(50),
filetype VARCHAR2(50),
filesize NUMBER(12),
content BLOB,
filedescription VARCHAR2(200),
fileurl VARCHAR2(500),
createby VARCHAR2(50),
createddate DATE,
lastmodifyby VARCHAR2(50),
lastmodifydate DATE,
status NUMBER(4)
)
create table SYS_ATTACHMENTBUSINESSRELATION
(
attachmentid VARCHAR2(50),
businessdateid VARCHAR2(50),
businessdatetable VARCHAR2(50)
)
2.附件下载,附件内容存在Blob字段内。
主要方法:
/**
*
*@User :Test
*@date :2014-6-4 上午10:18:55
*@return :void
*@userFor :用于附件下载
*/
public void downloadAttachement(HttpServletRequest request, HttpServletResponse response)
{
//得到业务id
String eventid = request.getParameter("eventid");
Attachment attachmentEntity = xxService.getAttachement(eventid);
//获得附件内容Blob
Blob blob = attachmentEntity.getcontent();
try
{
InputStream inputstream = null;
byte filedata[] = null ;
if (blob != null)
{
inputstream = blob.getBinaryStream();
//获得字节数组
filedata = new byte[inputstream.available()];
}
String fileNameMid = "";
//处理中文乱码问题
fileNameMid = URLEncoder.encode(attachmentEntity.getfilename(), "utf-8");
//把+号转空格 %20是空格意思
fileNameMid = fileNameMid.replace("+", "%20");
//用于页面跳出下载提示
response.setHeader("Content-Disposition", (new StringBuilder("attachment;filename=")).append(fileNameMid).toString());
OutputStream outS = response.getOutputStream();
//下载到本地
outS.write(filedata);
inputstream.close();
response.getOutputStream().flush();
response.getOutputStream().close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
3.附件上传
采用的附件上传插件是ServletFileUpload,jar包是commons-fileupload-1.2.2.jar
Spring MVC对应的Controller方法是
public Map<String, Object> saveWaterSoil(MultipartHttpServletRequest request, xx entity)
/**
*
*@User :Test
*@date :2014-6-4 上午11:15:59
*@return :List<AttachmentBo>
*@userFor :从MultipartHttpServletRequest中获得附件集合
*/
public List<AttachmentBo> getAttachmentBoList(MultipartHttpServletRequest request)
{
List<AttachmentBo> attachmentBoList = new ArrayList<AttachmentBo>();
/**
* 为该请求创建一个DiskFileItemFactory对象,
* 通过它来解析请求。执行解析后,所有的表单项目都
* 保存在一个List中。
*/
DiskFileItemFactory factory = new DiskFileItemFactory();
//设置缓冲区
factory.setSizeThreshold(102400000);
ServletFileUpload upload = new ServletFileUpload(factory);
//设置附件上传大小
upload.setSizeMax(102400000);
upload.setHeaderEncoding("UTF-8");
HttpSession session = request.getSession();
String username = (String) session.getAttribute("user");
if (!upload.isMultipartContent(request))
{
return null;
}
try
{
Map<String, MultipartFile> multipartFileMap=request.getFileMap();
Set<String> keySet=multipartFileMap.keySet();
for (String key : keySet) {
AttachmentBo m_AttachmentBo = new AttachmentBo();
MultipartFile multipartFile=multipartFileMap.get(key);
String fileName=multipartFile.getOriginalFilename();
m_AttachmentBo.setfilesize(Integer.parseInt(multipartFile.getSize() + ""));
//获得附件内容
m_AttachmentBo.setcontent(Hibernate.createBlob(multipartFile.getBytes()));
m_AttachmentBo.setcreateby(username);
m_AttachmentBo.setlastmodifyby(username);
m_AttachmentBo.setfilename(fileName);
m_AttachmentBo.setfilesize(Integer.parseInt(((Long)multipartFile.getSize()).toString()));
String desc=request.getParameter(key.concat("desc"));
m_AttachmentBo.setfiledescription(desc);
attachmentBoList.add(m_AttachmentBo);
}
return attachmentBoList;
}
catch (Exception e)
{
e.printStackTrace();
return null;
}
}
分享到:
相关推荐
总结来说,"layui多附件上传.rar"是一个包含完整功能的多文件上传解决方案,它利用layui的upload模块实现了前端交互,并且提供了完善的后台操作。对于需要在项目中集成多文件上传功能的开发者,这是一个值得参考和...
根据提供的文件信息,我们可以深入探讨有关“附件上传和下载”的技术细节,特别是涉及到前端与Java后端的交互过程。下面将详细介绍几个关键知识点: ### 一、MiniUI 附件上传 **MiniUI** 是一个轻量级的JavaScript...
总结,Java实现附件上传与下载涉及了Web编程的基础知识,包括HTTP协议、Servlet、文件I/O操作以及可能的第三方库。通过学习这些技术,开发者能够构建出功能完善的文件管理系统,满足用户在Web应用中上传、下载文件的...
总结来说,这段代码实现了一个基本的多附件上传功能,包括文件的保存、文件信息的记录以及与数据库的交互。它使用了Servlet API和Apache Commons FileUpload库来处理HTTP多部分请求,确保文件安全有效地上传到服务器...
总结来说,大附件上传是一个涉及多方面技术的复杂问题,包括文件分块、断点续传、并发控制、安全性、资源管理等。通过提供的代码和资源,开发者可以学习到如何在实际项目中实现这一功能,从而提升应用的用户体验和...
### 多附件上传技术解析与实现 #### 一、引言 在当今信息化时代,文件上传功能已经成为各类应用系统中的基本需求之一。特别是在企业级应用中,用户往往需要上传多个文件进行业务处理,这就对系统的文件上传功能提出...
总结来说,SWFUpload是一个功能齐全、用户体验良好的多附件上传控件,具有多文件选择、进度条显示和高度自定义的特点。它不仅简化了用户上传文件的过程,同时也为开发者提供了丰富的配置选项和易于扩展的架构,是...
### 关于附件上传文件名包含特殊字符的问题解决办法 #### 背景介绍 在互联网应用开发中,经常需要处理用户上传的附件。这些附件可能包括文档、图片、视频等多种类型。然而,在实际操作过程中,可能会遇到一个常见...
总结来说,这个多附件上传的Demo涵盖了前端HTML/JS、后端Struts2 Action、服务器环境配置以及数据模型等多个方面,是开发者学习和实践多文件上传功能的一个完整示例。通过这个案例,开发者可以了解整个文件上传流程...
### Webdynpro中上传下载附件控件的使用方法 #### 一、概述 在Webdynpro应用程序中,处理文件上传和下载是非常常见的需求之一。本文档详细介绍了如何使用`FileUpload`和`FileDownload`控件来实现这些功能。通过...
### IIS7 下设置上传附件大小限制的正确方法 #### 背景介绍 IIS (Internet Information Services) 是微软提供的互联网服务套件之一,它主要用于托管网站、Web 应用和服务。IIS7(IIS 7.0)作为 Windows Server 2008...
总结来说,实现Domino平台的多附件上传涉及以下几个关键步骤: 1. 设计包含多个文件域的表单,或者创建允许动态添加附件的界面。 2. 使用JavaScript进行前端验证,包括文件类型和大小检查。 3. 利用LotusScript或...
总结来说,实现ASP.NET多附件上传和附件编辑涉及前端交互、服务器处理、文件存储、用户权限以及安全性等多个方面。在设计和实现过程中,应兼顾功能需求、用户体验和系统安全,确保系统的稳定性和可扩展性。
在这个场景中,我们需要关注的是如何从泛微E9系统中获取附件内容,然后将这些附件下载并发送到指定的邮箱。由于标签中提到了"C#",我们可以推断这个示例是用C#编程语言实现的。 首先,我们要理解泛微E9和Ecology9...
总结来说,ASP.NET多附件上传实例代码涉及了从HTML表单设计、服务器控件使用到服务器端处理、客户端交互、错误处理和安全控制等多个方面。理解并掌握这些知识点对于开发高效、安全的文件上传功能至关重要。
在Java编程中,实现附件的上传与下载是Web应用程序中常见的功能,特别是在处理用户交互、数据交换和文件管理的应用场景下。以下将详细介绍如何利用Java技术来实现这一目标。 一、上传附件 1. **HTTP协议理解**:...
总结起来,"dz千脑附件上传插件"是针对Discuz! 论坛的附件上传解决方案,它通过增强的上传功能和友好的用户界面,改善了论坛用户上传和管理附件的体验。配合`editor_menu_forum.htm`、`更多免费插件.htm` 和 `readme...
总结来说,ExtJS4实现多附件上传组件涉及的关键技术点有文件选择、事件处理、Ajax上传、进度反馈、错误处理以及自定义组件的封装。通过理解这些知识点,你不仅可以构建一个功能完备的上传功能,还能提升对ExtJS组件...
在本教程中,我们将探讨如何使用ASP.NET MVC和EasyUI实现附件上传功能。 首先,我们需要在视图(View)中创建一个HTML表单,使用EasyUI的`<form>`和`<input type="file">`元素来让用户选择要上传的文件。例如: ```...
### 关于修改Roundcube Webmail上传附件的大小 在日常工作中,我们经常需要通过电子邮件发送文件,有时这些文件的大小超过了默认的限制,这就会导致发送失败或出现其他错误。对于使用Roundcube Webmail系统的用户而...