`
stephen830
  • 浏览: 3010180 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

上传下载组件SmartUpload使用方法

    博客分类:
  • java
阅读更多
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/255010 》 ,谢谢支持!★★★

我喜欢实用性的东西,不喜欢理论性的东西,尤其对越来越多的新概念不是很感冒。因此,我的文章主要以实用性为目标,让需要的朋友切切实实的能解决问题。

本篇将讲述java常用的上传/下载组件 SmartUpload 的详细java的朋友不会陌生,几乎在所有的B/S架构的项目或者产品中都会用到文件的上传/下载。

关于SmartUpload组件可以在本篇下面的附件中下载。(已经解决上传/下载中文文件名的乱码问题,本人的开发环境均为UTF-8环境)

(1)文件上传

<%@ page contentType="text/html;charset=UTF-8"%><%@ page import="com.soft4j.httpupload4j.SmartUpload"%><%@ page import="com.soft4j.bo.WebFileMgr"%><%
	String ret = null;
	SmartUpload su = null;
	try{
		su = new SmartUpload();
		su.initialize(pageContext);
		su.upload();
		ret = WebFileMgr.upload(su,pageContext);//WebFileMgr.java 处理文件上传
		if(ret!=null){ 
			out.print("successed");
		}
	}catch(Exception e){
		out.print("faild");
	}finally{
		su = null;
	}
%>


WebFileMgr.upload(su,pageContext)方法内容:
    /**
	 * 上传方法.
	 * @param su
	 * @param pageContext
	 * @return
	 * @throws Exception
	 */
    public static String upload(SmartUpload su,PageContext pageContext) throws Exception {
        com.soft4j.httpupload4j.File suFile = null;
        int fileCount = 0;
        int maxFileSize = 900;//单个文件最大为900K
        String AllowedExtensions=",jpg,jpeg,gif,png,";//允许上传的文件类型
        try {
            
            for (int i=0; i<su.getFiles().getCount();i++) {
                suFile = su.getFiles().getFile(i);
                if (suFile.isMissing())
                    continue;
                fileSize = suFile.getSize()/1024;//字节转换成KB
                if(fileSize==0) fileSize=1;

                if(maxFileSize<fileSize) throw new Exception("单个上传文件的容量不能超过["+maxFileSize+"KB]");

                if (suFile.getFileExt() == null
                        || "".equals(suFile.getFileExt())) {
                    fileExt = ",,";
                } else {
                    fileExt = "," + suFile.getFileExt().toLowerCase() + ",";
                }

                if (!"".equals(AllowedExtensions)
                        && AllowedExtensions.indexOf(fileExt) == -1) {
                    throw new Exception("您上传的文件[" + suFile.getFileName()
                            + "]的类型为系统禁止上传的文件类型,不能上传!");
                }

                fileCount++;
            }
            if (fileCount==0) throw new Exception("请选择上传的文件");

            StringBuffer fullFileName = null;//保存到服务器上的文件名(带路径)
            for (int i=0; i<su.getFiles().getCount();i++) {
                suFile = su.getFiles().getFile(i);
                if (suFile.isMissing()) continue;
                fullFileName = new StringBuffer("文件的路径");//填写 文件的路径
                fullFileName.append("文件名");//填写 文件名
                suFile.saveAs(fullFileName.toString(),SmartUpload.SAVE_PHYSICAL);
            }
            return "successed";
        } finally {
        	//
        }
    }



上面的JSP,Java代码就可以实现文件的上传.

(2)文件下载

下载相对更为简单,只要设定下载的文件名(带路径)就可以了.

<%@ page contentType="text/html;charset=UTF-8"%>
<%@ page import="com.soft4j.httpupload4j.SmartUpload"%>
<%
	//新建一个SmartUpload对象
    SmartUpload su = new SmartUpload();
    //初始化
    su.initialize(pageContext);
    //设定要下载的文件名(带路径)
    String fileName="下载的文件名";//文件名(带路径)
    try{
    	su.downloadFile(fileName);//下载文件
    }catch(Exception e){
    	e.printStackTrace();
    	out.println(e.toString());
    }
    response.getOutputStream().close();
%>





-----------------------
附录:
(1). 解决中文问题的修改说明.参见[zip压缩包中的SmartUpload.java]
(2). smartupload.zip








分享到:
评论
6 楼 huangleizzz 2012-02-16  
  
5 楼 duronshi 2009-01-09  
这里只判断了文件的后缀,最好是通过判断文件头来校验上传文件的合法性.
4 楼 stephen830 2009-01-08  
javacoo 写道
怎么得到图片的宽和高呢?


/**
	 * 生成缩略图
	 * @param srcImageFile 源图片文件的File实例.
	 * @param dstImageFileName 待生成的缩略图片文件名
	 * @throws Exception
	 */
	public static void makeSmallImage(File srcImageFile,String dstImageFileName) throws Exception {
		FileOutputStream fileOutputStream = null;
        JPEGImageEncoder encoder = null;
        BufferedImage tagImage = null;
        Image srcImage = null;
		try{
	        srcImage = ImageIO.read(srcImageFile);
	        int srcWidth = srcImage.getWidth(null);//原图片宽度
	        int srcHeight = srcImage.getHeight(null);//原图片高度
	        int dstMaxSize = 120;//目标缩略图的最大宽度/高度,宽度与高度将按比例缩写
	        int dstWidth = srcWidth;//缩略图宽度
	        int dstHeight = srcHeight;//缩略图高度
	        float scale = 0;
	        //计算缩略图的宽和高
	        if(srcWidth>dstMaxSize){
	            dstWidth = dstMaxSize;
	            scale = (float)srcWidth/(float)dstMaxSize;
	            dstHeight = Math.round((float)srcHeight/scale);
	        }
	        srcHeight = dstHeight;
	        if(srcHeight>dstMaxSize){
	            dstHeight = dstMaxSize;
	            scale = (float)srcHeight/(float)dstMaxSize;
	            dstWidth = Math.round((float)dstWidth/scale);
	        }
	        //生成缩略图
	        tagImage = new BufferedImage(dstWidth,dstHeight,BufferedImage.TYPE_INT_RGB);
	        tagImage.getGraphics().drawImage(srcImage,0,0,dstWidth,dstHeight,null);
	        fileOutputStream = new FileOutputStream(dstImageFileName);
	        encoder = JPEGCodec.createJPEGEncoder(fileOutputStream);
	        encoder.encode(tagImage);
	        fileOutputStream.close();
	        fileOutputStream = null;
		}finally{
			if(fileOutputStream!=null){
        		try{
        			fileOutputStream.close();
        		}catch(Exception e){
        		}
        		fileOutputStream = null;
        	}
        	encoder = null;
        	tagImage = null;
        	srcImage = null;
            System.gc();
		}
	}
3 楼 javacoo 2009-01-08  
怎么得到图片的宽和高呢?
2 楼 stephen830 2008-10-26  
Nick_HF 写道

在客户哪里使用,Cpu占用率比较高,后来换了,建议用apache common upload组件


后台具体用哪个实现可以自行更替,samrtupload是先写内存再存文件,所以占资源多点但效率高;后者是边传边存文件,占资源少但效率会慢一点。
1 楼 Nick_HF 2008-10-26  
在客户哪里使用,Cpu占用率比较高,后来换了,建议用apache common upload组件

相关推荐

    jspSmartUpload上传下载组件及使用方法

    `jspSmartUpload` 是一个在JSP(Java Server Pages)环境下广泛使用的上传下载组件,它基于Java技术,提供了强大的文件上传和下载功能。本文将深入探讨`jspSmartUpload`组件的工作原理、主要特性以及如何在实际项目...

    上传文件组件SmartUpload

    上传文件组件SmartUpload

    上传文件组件SmartUpload2

    上传文件组件SmartUpload

    可完成中文文件名的上传下载组件jspsmartupload

    可完成中文文件名的上传下载组件jspsmartupload

    jspSmartUpload 组件的上传下载完整实例

    采用jspSmartUpload 组件实现的上传下载的完整实例 下载即可运行,但是这个压缩包不支持中文名称的文件下载功能,我上传了一个可以下载中文的不会乱码的jspSmartUpload 组件,网址:...

    smartupload上传下载组件

    "SmartUpload上传下载组件"是一款在Web开发中广泛使用的工具,尤其在处理用户需要上传或下载大文件的场景下表现出色。它是一个功能强大的Java Servlet和JavaScript库,旨在简化文件上传和下载的过程,同时提供了丰富...

    使用jspSmartUpload组件在jsp中实现上传和下载

    使用jspSmartUpload组件在jsp中实现上传和下载 在现代Web开发中,文件上传与下载是常见的需求之一,尤其在企业级应用、个人博客、图片分享等场景中尤为重要。jspSmartUpload作为一款专为JSP设计的文件上传组件,以...

    jspSmartUpload上传下载组件及使用方法.rar

    `jspSmartUpload`是一款在Java Web开发中广泛使用的上传和下载组件,它提供了方便、高效且灵活的文件处理功能。这个组件最初由JSPSmart公司开发,旨在解决JSP页面中文件上传的问题,使得开发者能够轻松地在网页上...

    SmartUpload组件上传下载实例

    通过SmartUpload组件,开发者可以轻松地集成文件上传和下载功能,极大地提高了开发效率,同时也提升了用户的使用体验。在实际项目中,根据需求进行适当定制,可以构建出稳定且高效的文件管理系统。

    上传下载组件jspSmartUpload.zip

    `jspSmartUpload` 是一个经典的Java Web上传下载组件,主要应用于JSP(JavaServer Pages)页面,便于开发者实现在网页上进行文件的上传和下载功能。这个组件简化了处理用户通过Web表单上传文件的复杂过程,提供了一...

    jspSmartUpload上传下载组件,以及教你如何使用

    下面将详细介绍`jspSmartUpload`的使用方法及其核心知识点。 ### 1. jspSmartUpload组件介绍 `jspSmartUpload`是由Kreotek公司开发的,它简化了文件上传和下载的复杂过程。这个组件提供了丰富的API,使得开发者...

    SmartUpload组件及使用示例

    在IT行业中,文件上传功能是许多Web应用必不...通过掌握它的使用方法和特性,你可以快速实现各种复杂的文件上传功能,提高开发效率,提升用户体验。无论你是新手还是经验丰富的开发者,SmartUpload都是值得信赖的伙伴。

    使用jspSmartUpload实现文件上传下载

    在Java Web开发中,文件上传和下载是常见的功能需求,特别是在构建...通过了解`SmartUpload`类的关键方法和使用示例,开发者可以更好地在项目中集成这个组件,提升用户体验,同时确保上传和下载过程的安全性和稳定性。

    jspSmartUpload上传下载组件(*.jar)

    jspSmartUpload上传下载组件(*.jar)

    极品jsp上传组件jspSmartUpload及使用方法

    精心准备了一个极品的jsp上传组件,内有上传文件需要的jar包及详细说明,保证一看就会;还有更好的通用js页面上传代码(含使用说明),负责多文件上传的动态显示(记住这是通用的啊),使用更是方便。有了这两个5分钟...

    jsp 上传组件 smartupload

    **正文** `SmartUpload`是Java Web开发中一个流行的文件上传组件,专为JSP(Java Server Pages)设计。...通过理解其核心概念和使用方法,开发者可以快速地在自己的JSP项目中实现高效、稳定的文件上传功能。

    JSP 文件的上传与下载 smartupload组件

    在这个场景中,我们关注的是JSP中的文件上传和下载功能,以及如何利用SmartUpload组件来实现这一目标。SmartUpload是一个强大的文件上传组件,它简化了在JSP中处理文件上传的过程。 首先,我们要理解文件上传的基本...

Global site tag (gtag.js) - Google Analytics