上传:
控制层
SmartUpload su = new SmartUpload();
su.initialize(this.getServletConfig(), request, response);
try {
su.upload();//不要忘记写哦
manager.upload(su);
} catch (SmartUploadException e) {
e.printStackTrace();
}
smartupload还是很牛的。
业务层
File1 file = files.getFile(i);
//生成上传文件的实例
Uploadfiles fileInstance = new Uploadfiles();
fileInstance.setFilename(file.getFileName());
fileInstance.setFiletitle(su.getRequest().getParameter("title"));
fileInstance.setFilesize((long)file.getSize());
fileInstance.setFileext(file.getFileExt());
fileInstance.setCreatedate(new Date());
fileInstance.setContenttype(file.getContentType());
byte[] bytes = new byte[file.getSize()];
for(int j = 0 ; j < file.getSize() ; j++){
bytes[j] = file.getBinaryData(j);
}
//将大数据字段保存到另外一个表中,等需要的时候 再进行调用
//生成filecontent实例,并建立双向关联关系
Blob filecontent = Hibernate.createBlob(bytes);
Filecontent content = new Filecontent();
content.setUploadfiles(fileInstance);
content.setContent(filecontent);
fileInstance.getFilecontents().add(content);
//保存数据
try{
HibernateUtils.beginTransaction();
dao.saveFile(fileInstance);
HibernateUtils.commitTransaction();
}catch(Exception e){
HibernateUtils.rollbackTransaction();
e.printStackTrace();
}finally{
HibernateUtils.closeSession();
}
}
看到大牛们写的上传BLOB数据的方法有很多种,其中一种使用数量最多的是用游标来控制的,我偷懒直接用Hibernate的特性来。
展现:(起初最难控制的地方)
控制层:
String id = request.getParameter("id");
List list = manager.getContent(id);
byte[] bytes = (byte[])list.get(0);
//原来为了得到文件的类型,开始准备手工写type,最后发现FILE1类里面已经有了,差点走弯路。
response.setContentType(list.get(1).toString());
OutputStream outs = response.getOutputStream();
outs.write(bytes);
outs.flush();
outs.close();
业务层:
InputStream stream = null;
List list = new ArrayList();
Uploadfiles uf = getFileByID(new Long(id));
byte[] bytes = new byte[uf.getFilesize().intValue()];
try {
stream = uf.getFilecontents().iterator().next().getContent().getBinaryStream();
//还是有缺陷 long to int
stream.read(bytes);
list.add(bytes);
list.add(uf.getContenttype());
} catch (Exception e) {
e.printStackTrace();
}
return list;
总结:整体来说主要就是这些代码,完成了其中的上传和查看功能,smartupload里面的类其实不是很多,但是看起来还是有点难度,我只看完了里面的成员方法和变量,里面最牛的还是smartupload的getrequest()方法和File1的getContent()方法。我觉得那两个方法用好了,就可以了。还有就是性能上的问题,在查找资料的时候,看到从数据库抓取文件数据的时候,在没用到blob这个属性的时候还是不要抓出来了,尤其在列表的时候,我在hibernate里面设置了lazy。
本来想写一个上传多个文件的例子,结果偷懒之写完了单个文件上传的,最近在学struts,剩下的多个上传还是等闲了在写。
分享到:
相关推荐
在"jsp上传文件模块代码,测试成功的"项目中,我们有两个关键的文件:`uploadFile.jsp`和`upload.jsp`。这两个文件分别承担不同的职责。 1. `uploadFile.jsp`:通常是用户交互的页面,负责展示上传文件的表单。这个...
在压缩包内的"uploadfile"可能是整个上传模块的主要代码文件,可能包含HTML表单、JavaScript处理文件选择和预览,以及PHP处理文件上传和数据库交互的脚本。 具体知识点可能包括: 1. HTML5的`...
在本项目"springboot-uploadfile.zip"中,我们聚焦于使用Spring Boot 2.0来构建RESTful API,实现文件的上传与下载功能。这个实战课程的源码提供了清晰的指导,帮助开发者理解如何在实际应用中处理这些常见的Web操作...
#### 二、关键功能模块 ##### 1. 文件操作函数 这些函数主要用于处理本地文件系统中的文件,为后续的上传下载提供支持。 - **`GetFileLen`**:获取文件长度。此函数通过使用`ftell`和`fseek`函数来获取当前文件指针...
在这个主题中,我们主要讨论的是如何在uni-app中处理图片和视频的上传功能,这是一个在各种应用场景中都非常常见的需求。 一、uni-app框架介绍 uni-app是Egret Wing团队推出的一个基于Vue.js的多端开发框架。它通过...
在文件管理模块中,Servlet主要负责处理文件的上传、下载和删除操作。例如,`doPost`方法接收上传请求,解析请求体获取文件数据,然后将其保存到服务器的特定目录;对于下载请求,Servlet读取文件内容并将其写入到...
"文件上传uploadfile he io"这个标题暗示了我们将讨论的是与文件上传相关的技术和组件,特别是涉及到“uploadfile”和“I/O”(输入/输出)操作。下面我们将深入探讨这两个关键概念。 1. **文件上传组件**:文件...
- 上载文件 (`UploadFile`): 将本地文件上传至FTP服务器。 - 下载文件 (`DownloadFile`): 从FTP服务器下载文件到本地。 - 创建目录 (`CreateDirectory`): 在FTP服务器上创建新目录。 - 删除目录 (`RemoveDirectory`)...
在实际开发中,你可能会编写单元测试或集成测试来确保登录和上传功能的正确性。这可能包括使用JUnit、Mockito等工具来模拟HTTP请求和数据库交互,验证Action类的行为是否符合预期。 总的来说,“Struts登陆上传模块...
在本文中,我们将深入探讨如何在ASP.NET Core框架下实现jqweui的图片上传功能,同时结合.NET 6和Visual Studio 2022进行开发。这个功能包括图片的上传、预览、删除以及服务器端的同步操作。由于实际代码可能较为复杂...
选择的文件路径可以传递给Swift模块,然后使用阿里云OSS SDK的`uploadFile`或`uploadData`方法上传文件。上传过程中,可能需要处理进度回调,以便在React Native端更新用户界面。 安全性是另一个重要的考虑因素。在...
`ng2-file-upload`是一个强大的Angular模块,它提供了丰富的功能来处理文件上传,包括进度条显示、文件预览、错误处理等。下面我们将按照步骤详细解释如何集成并使用这个库。 首先,我们需要安装`ng2-file-upload`...
6. **modFileUpdate.bas和Form1.frm**:这两个文件可能是VB工程的一部分,`modFileUpdate.bas`可能包含与文件上传相关的模块代码,而`Form1.frm`则可能是一个包含用户界面元素(如OpenFileDialog按钮)的窗体文件。...
5. **phpcms** - phpcms 框架主目录:整个 CMS 的核心所在,包含了框架的核心代码和各个模块。 6. **languages** - 框架语言包目录:存储不同语言版本的系统文本,支持多语言环境。 7. **libs** - 框架主类库、...
这个压缩包文件“SFTP 源代码库,包含上传文件,下载文件,批量上传和下载.rar”显然提供了实现SFTP功能的源代码,这对于开发人员来说是极其宝贵的资源。下面将详细讨论SFTP的相关知识点,以及可能包含在源代码库中...
在文件上传方面,Nginx 提供了一个强大的模块——`nginx_uploadprogress_module`,用于跟踪和显示文件上传进度。这对于提高用户体验至关重要,尤其是在上传大型文件或网络连接不稳定的情况下。 #### 二、模块安装与...
在“hession实例代码(文件上传和下载)”这个项目中,我们可以看到一个基于Hession实现的文件服务,该服务包含了文件的上传和下载功能。这通常涉及到以下几个关键知识点: 1. **Hession序列化与反序列化**:Hession...
- `cmpts`: 可能是自定义组件的文件夹,用于封装复用的功能模块,提高代码的可维护性。 3. **功能实现**: - **校友留言**: 使用`pages`中的某个页面实现留言功能,用户可以在该页面输入留言并提交到服务器,...
4. **微信小程序上传文件API**:微信小程序提供了`wx.chooseImage`、`wx.saveFile`和`wx.uploadFile`等API,用于选择本地文件、保存文件到本地以及上传文件到服务器。 5. **cos-wx-upload-file库**:这个库可能是...
6. **毕业设计**: 这个项目很可能是一个学生的毕业设计作品,因此它可能涵盖了一些基本的功能和设计,以满足毕业设计的要求,而不是一个成熟的商业产品。 综上所述,这个系统设计实现了基于ASP.NET的动态口令认证的...