博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax fileupload上传组件的使用感悟
阅读量:6788 次
发布时间:2019-06-26

本文共 2031 字,大约阅读时间需要 6 分钟。

最近给公司开发项目中,一直在做一个上传功能,在做这个功能中对上传组件的使用感触挺深的。

我最早使用的一款上传组件是fileupload,不是struts的,是servlet的,它是在serlvet中使用的,在后台要写好多好多的代码,感觉那个太繁琐了,之后又使用了swf上传组件,这个组件的上传功能是在前台实现的,在前台就可以实现上传而且还可以实现动态上传的进度条,给人的视觉感觉很不错。但是,它是将flash和js封装在一起的,由于要先前台实现上传,所以很多东西写的比较复杂,想要掌握它并熟悉它需要花费大量的时间去研究它,而且很难把握住,出了问题也不好调试。。。。

最终在我尝试好多的上传组件中,我选择了fileupload上传组件。首先是前台它是用jquery和ajax实现的,大家先可以看一下前台代码:

function ajaxFileUpload()

    {
       
        $("#loading")
        .ajaxStart(function(){
            $(this).show();
        })//开始上传文件时显示一个图片
        .ajaxComplete(function(){
            $(this).hide();
        });//文件上传完成将图片隐藏起来
       
        $.ajaxFileUpload
        (
            {
                url:'fileUploadAction.action',//用于文件上传的服务器端请求地址
                secureuri:false,//一般设置为false
                fileElementId:'file',//文件上传空间的id属性  <input type="file" id="file" name="file" />
                dataType: 'json',//返回值类型 一般设置为json
                success: function (data, status)  //服务器成功响应处理函数
                {
                    alert(data.message);//从服务器返回的json中取出message中的数据,其中message为在struts2中定义的成员变量
                   
                    if(typeof(data.error) != 'undefined')
                    {
                        if(data.error != '')
                        {
                            alert(data.error);
                        }else
                        {
                            alert(data.message);
                        }
                    }
                },
                error: function (data, status, e)//服务器响应失败处理函数
                {
                    alert(e);
                }
            }
        )
       
        return false;

    }

 

这是ajax的方法写的组件中的方法,前台只需写一个简单的input的text框和一个简单的buttton按钮,然后通过jquery调用就可以实现。

然后给大家看一下后台代码:

    String path = ServletActionContext.getRequest().getRealPath("/upload");

    try {

        File f = this.getFile();
        if(this.getFileFileName().endsWith(".exe")){
            message="对不起,你上传的文件格式不允许!!!";
            return ERROR;
        }
        FileInputStream inputStream = new FileInputStream(f);
        FileOutputStream outputStream = new FileOutputStream(path + "/"+ this.getFileFileName());
        byte[] buf = new byte[1024];
        int length = 0;
        while ((length = inputStream.read(buf)) != -1) {
            outputStream.write(buf, 0, length);
        }
        inputStream.close();
        outputStream.flush();
    } catch (Exception e) {
        e.printStackTrace();
        message = "对不起,文件上传失败了!!!!";
    }
    return SUCCESS;
}

 

后台只需要一个简单的输入输出流就可以实现,将你要上传的文件通过前台的ajax提交到对应的action类。是不是很简单?比起很多方法它要简单的多,类型除了.exe的文件都可以上传。但是使用的过程是要注意一点,使用的时候,要注意它也是基于struts的基础上来实现的,所以再你使用这个组件之前你得搭配好struts 2的配置环境,而且jar包何总必须有struts2-json-puligun.jar这个包,大家使用的时候一定要多注意。

转载于:https://www.cnblogs.com/shunxiyuan/archive/2011/12/26/2302607.html

你可能感兴趣的文章
沙龙报名 | 探索新零售时代的数字化创新
查看>>
spring security中当前用户信息
查看>>
[Golang软件推荐] RSA公私钥加解密(解决Golang私钥加密公钥解密问题)
查看>>
html-meta http-equiv设置网页指定时间跳转
查看>>
python 入门
查看>>
如何防止http请求数据被篡改
查看>>
MyEclipse 2013集成JRebel
查看>>
indexOf()
查看>>
go语言学习
查看>>
tidb 安装
查看>>
phpcms V9.6.0版本整合百度ueditor1.4.3.2,包括水图片上传水印
查看>>
Tiptop GP中Excel的控制方法
查看>>
JavaWeb分页技术总结
查看>>
基于unity框架构造IOC容器
查看>>
Windows更新导致的打印问题
查看>>
Chrome 控制台不完全指南
查看>>
Notification与多线程
查看>>
高可用、高扩展性、负载均衡
查看>>
VIM用法
查看>>
oscache.properties文件配置
查看>>