`
qhuwn
  • 浏览: 71760 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

uploadfile模块-上传和查看功能代码

阅读更多
上传:
控制层
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上传文件模块代码,测试成功的

    在"jsp上传文件模块代码,测试成功的"项目中,我们有两个关键的文件:`uploadFile.jsp`和`upload.jsp`。这两个文件分别承担不同的职责。 1. `uploadFile.jsp`:通常是用户交互的页面,负责展示上传文件的表单。这个...

    一键上传多图(多文件)html+php代码,模块化直接可用。

    在压缩包内的"uploadfile"可能是整个上传模块的主要代码文件,可能包含HTML表单、JavaScript处理文件选择和预览,以及PHP处理文件上传和数据库交互的脚本。 具体知识点可能包括: 1. HTML5的`...

    springboot-uploadfile.zip

    在本项目"springboot-uploadfile.zip"中,我们聚焦于使用Spring Boot 2.0来构建RESTful API,实现文件的上传与下载功能。这个实战课程的源码提供了清晰的指导,帮助开发者理解如何在实际应用中处理这些常见的Web操作...

    http上传下载C++代码实现

    #### 二、关键功能模块 ##### 1. 文件操作函数 这些函数主要用于处理本地文件系统中的文件,为后续的上传下载提供支持。 - **`GetFileLen`**:获取文件长度。此函数通过使用`ftell`和`fseek`函数来获取当前文件指针...

    uniapp 图片 视频上传

    在这个主题中,我们主要讨论的是如何在uni-app中处理图片和视频的上传功能,这是一个在各种应用场景中都非常常见的需求。 一、uni-app框架介绍 uni-app是Egret Wing团队推出的一个基于Vue.js的多端开发框架。它通过...

    jsp网络编程\常用模块源代码\文件管理模块

    在文件管理模块中,Servlet主要负责处理文件的上传、下载和删除操作。例如,`doPost`方法接收上传请求,解析请求体获取文件数据,然后将其保存到服务器的特定目录;对于下载请求,Servlet读取文件内容并将其写入到...

    文件上传uploadfile he io

    "文件上传uploadfile he io"这个标题暗示了我们将讨论的是与文件上传相关的技术和组件,特别是涉及到“uploadfile”和“I/O”(输入/输出)操作。下面我们将深入探讨这两个关键概念。 1. **文件上传组件**:文件...

    FTP类模块(VB.net)

    - 上载文件 (`UploadFile`): 将本地文件上传至FTP服务器。 - 下载文件 (`DownloadFile`): 从FTP服务器下载文件到本地。 - 创建目录 (`CreateDirectory`): 在FTP服务器上创建新目录。 - 删除目录 (`RemoveDirectory`)...

    struts登陆上传模块

    在实际开发中,你可能会编写单元测试或集成测试来确保登录和上传功能的正确性。这可能包括使用JUnit、Mockito等工具来模拟HTTP请求和数据库交互,验证Action类的行为是否符合预期。 总的来说,“Struts登陆上传模块...

    jqweui上传图片功能-asp.net core

    在本文中,我们将深入探讨如何在ASP.NET Core框架下实现jqweui的图片上传功能,同时结合.NET 6和Visual Studio 2022进行开发。这个功能包括图片的上传、预览、删除以及服务器端的同步操作。由于实际代码可能较为复杂...

    swift-基于阿里云SDK的react-native上传组件

    选择的文件路径可以传递给Swift模块,然后使用阿里云OSS SDK的`uploadFile`或`uploadData`方法上传文件。上传过程中,可能需要处理进度回调,以便在React Native端更新用户界面。 安全性是另一个重要的考虑因素。在...

    angular2 ng2-file-upload上传示例代码

    `ng2-file-upload`是一个强大的Angular模块,它提供了丰富的功能来处理文件上传,包括进度条显示、文件预览、错误处理等。下面我们将按照步骤详细解释如何集成并使用这个库。 首先,我们需要安装`ng2-file-upload`...

    VB上传本地文件到服务器

    6. **modFileUpdate.bas和Form1.frm**:这两个文件可能是VB工程的一部分,`modFileUpdate.bas`可能包含与文件上传相关的模块代码,而`Form1.frm`则可能是一个包含用户界面元素(如OpenFileDialog按钮)的窗体文件。...

    v9目录结构

    5. **phpcms** - phpcms 框架主目录:整个 CMS 的核心所在,包含了框架的核心代码和各个模块。 6. **languages** - 框架语言包目录:存储不同语言版本的系统文本,支持多语言环境。 7. **libs** - 框架主类库、...

    SFTP 源代码库,包含上传文件,下载文件,批量上传和下载.rar

    这个压缩包文件“SFTP 源代码库,包含上传文件,下载文件,批量上传和下载.rar”显然提供了实现SFTP功能的源代码,这对于开发人员来说是极其宝贵的资源。下面将详细讨论SFTP的相关知识点,以及可能包含在源代码库中...

    Nginx文件上传进度显示

    在文件上传方面,Nginx 提供了一个强大的模块——`nginx_uploadprogress_module`,用于跟踪和显示文件上传进度。这对于提高用户体验至关重要,尤其是在上传大型文件或网络连接不稳定的情况下。 #### 二、模块安装与...

    hession实例代码(文件上传和下载)

    在“hession实例代码(文件上传和下载)”这个项目中,我们可以看到一个基于Hession实现的文件服务,该服务包含了文件的上传和下载功能。这通常涉及到以下几个关键知识点: 1. **Hession序列化与反序列化**:Hession...

    微信小程序开发校友录通讯录

    - `cmpts`: 可能是自定义组件的文件夹,用于封装复用的功能模块,提高代码的可维护性。 3. **功能实现**: - **校友留言**: 使用`pages`中的某个页面实现留言功能,用户可以在该页面输入留言并提交到服务器,...

    coswxuploadfile微信小程序上传文件到腾讯云v5

    4. **微信小程序上传文件API**:微信小程序提供了`wx.chooseImage`、`wx.saveFile`和`wx.uploadFile`等API,用于选择本地文件、保存文件到本地以及上传文件到服务器。 5. **cos-wx-upload-file库**:这个库可能是...

    asp.net动态口令认证的网上选课系统的设计与实现(源代码+LW).zip

    6. **毕业设计**: 这个项目很可能是一个学生的毕业设计作品,因此它可能涵盖了一些基本的功能和设计,以满足毕业设计的要求,而不是一个成熟的商业产品。 综上所述,这个系统设计实现了基于ASP.NET的动态口令认证的...

Global site tag (gtag.js) - Google Analytics