`
qhuwn
  • 浏览: 70077 次
  • 性别: 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,剩下的多个上传还是等闲了在写。
分享到:
评论

相关推荐

    机智内容管理系统2.0

    参数: "num"=&gt;"20" 说明:当前页显示条数,一定和分页代码一致. 参数: "title_sub"=&gt;"40" 说明: 文章标题默认截取数,也可以指定数 参数: "intro_sub"=&gt;"200" 说明: 文章摘要默认截取数,也可以指定数 参数: "ordersort...

    网瑞企业网站管理系统简体中文版 A1.0 GBK.zip

    网瑞企业网站管理系统简体中文版拥有企业网站常用的模块功能:企业简介模块、联系我们模块、新闻(文章)模块、产品模块、案例模块、招聘模块、在线留言反馈系统、友情链接、栏目管理、管理员与权限管理等等,所有网站...

    网瑞科技ASP企业网站管理系统 A1.0 GBK

    摘要:ASP源码,企业建站,企业网站系统 网瑞科技企业网站管理系统简体中文版A... 本地测试请检查IIS是否开启父目录,数据库文件夹/data/、js广告生成文件夹/adfile/和上传附件文件夹/uploadfile/是否开有写入权限。  

    DotNetTextBox所见即所得编辑器控件 v3.3.1

    3) 增加上传及插入模板的功能,并在全部内置功能的演示中代替了插入EXCEL表格的功能(由于此功能需要服务器安装office2000,使用环境有限制,所以从演示中去掉,但保留此功能,有需要请自行在配置文件中增加...

    迷你IIS服务器 智能端口谢寅修正窗口版

     迷你IIS服务器 提供 Microsoft IIS 5.0 兼容的 Active Server Pages 模块,不用修改代码直接将已经存在的使用 ASP 开发的应用程序移植到 迷你IIS服务器 平台上来,也可以直接使用已经存在所有 COM 组件。...

    网瑞科技企业网站管理系统 1.0

    拥有企业网站常用的模块功能:企业简介模块、联系我们模块、新闻(文章)模块、产品模块、案例模块、招聘模块、在线留言反馈系统、友情链接、栏目管理、管理员与权限管理等等,所有网站代码不繁杂,可拓展性非常强大。...

    PHP基础教程 是一个比较有价值的PHP新手教程!

    不过明确的是编写那样的代码有多简单,购买它们会有多昂贵以及它们需要多么昂贵和强大的硬件。如果你有什么中立的观点(比如说没有被SUN和Microsoft的百万美金所影响),请顺便通知我。 据我所知,JSP基于Java,...

    Journey:旅程通过向您展示其他人为达到目标而采取的路径,引导您找到梦想的工作

    查看每个人的个人资料,以查看他们的时间表以及他们如何获得所需的工作。 单击“让我到那里”并输入您当前的职位,以查找从您当前工作到您梦想工作的人。 数据 数据是使用 Scrapy ( ) Python 模块从 LinkedIn 获得...

    机智CMS内容管理系统 v0.50版

    本CMS采用容易调用的代码方式,简单调用即可构造各种形式的展示模块.可应用很多中小型网站.并且本CMS为开源免费提供广大用户使用. 安装方法: 将程序上传至服务器,导入说明中的witcms.sql数据。修改inc下的conn.php...

    机智CMSwitcms企业建站 V0.10

    本CMS采用容易调用的代码方式,简单调用即可构造各种形式的展示模块.可应用很多中小型网站.并且本CMS为开源免费提供广大用户使用. 后台地址:admin/ 用户密码:adminadmin 目录安全:uploadfile是统一上传目录,只有这个...

Global site tag (gtag.js) - Google Analytics