• plupload组件结合struts2完成上传


    1. 前几天因为工作需要换上传组件,以前用的是uploadify,uploadify由于浏览器flash的关系,不兼容,所以找到了这个plupload这个组件。
    2. 下面关于plupload的介绍和相关属性函数可以参考一下帖子:http://www.cnblogs.com/2050/p/3913184.html?utm_source=tuicool&utm_medium=referral
    3. 去官网下载plupload,组件下载地址:http://www.plupload.com/download/
    4. 代码如下—–

      js代码如下

    function initPlupload(){
            var uploader = new plupload.Uploader({
                runtimes : 'html5,flash,silverlight,html4',
                browse_button : 'pickfiles', // you can pass an id...
                container: document.getElementById('container'), // ... or DOM Element itself
                url : '<%= request.getContextPath()%>/test/uploadFile.shtml',
                flash_swf_url : '${ctxPath}/js/plupload-2.2.1/Moxie.swf',
                silverlight_xap_url : '${ctxPath}/js/plupload-2.2.1/Moxie.xap',
    
                filters : {
                    max_file_size : '10mb',//限制文件大小
                    mime_types: [
                        { title : "Excel files", extensions : "xlsx,xls"}
                    ],//限制文件类型
                    prevent_duplicates : true //不允许选取重复文件
                },
    
                init: {
                    PostInit: function() {
                        document.getElementById('filelist').innerHTML = '';
    
                    },
    
                    FilesAdded: function(up, files) {
                        if(up.files.length>1) {
                            alert("只允许上传单个文件!")
                            return;
                        }
                        plupload.each(files, function(file) {
                            document.getElementById('filelist').innerHTML += '<div id="' + file.id + '"><font style="color:#666666;" size="2">' + file.name + ' (' + plupload.formatSize(file.size) + ')</font> <b></b></div>';
                            up.start();
                        });
                    },
    
                    UploadProgress: function(up, file) {
                        document.getElementById(file.id).getElementsByTagName('b')[0].innerHTML = '<span>' + file.percent + "%</span>";
                    },
    
                    UploadComplete: function(up, file) {
                        if(up.files.length<1) {
                            alert("请点击选择文件,再进行上传!");
                            return;
                        }
                        alert("上传成功!");
                        up.destroy();
                    },
    
                FileUploaded:function(uploader,file,responseObject) {
                        var response = JSON.stringify(responseObject.response);
                        $("#saveFileName").val(response);
                    },
    
                    Error: function(up, err) {
                        alert("上传失败,"+err.message);
                    }
                }
            });
    
            uploader.init();

    html代码

    <center>
        <input type="hidden" id="saveFileName"/>
        <div id="container">
            <button id="pickfiles">上传文件</button></div>
        <div id="filelist" ><font style="color:#666666;" size="2">您的浏览器未安装 Flash, Silverlight, Gears, BrowserPlus 或者支持 HTML5.</font></div>
    </center>
    

    java代码

    public class TestAction {
    
        private String fileFileName; //文件名称
        private String fileContentType; //文件类型  
        private File file; //上传过来的文件
    
        private String saveFileName;
    
        @Autowired
        private YLService ylService;
    
        public void uploadFile() throws Exception {
    
            String savePath = PropertyHelper.getProp ("conf.pl.filePath");
    
            String fileName = DateUtil.format(new Date(), "yyyy-MM-dd");
            String name = null;
            File uploadfile = null;
            String saveFileName = null;
                name = UUID.randomUUID().toString().replace("-", "");
            saveFileName = fileName + "/" + SessionFilter.getLoginUserOrgan().getMoId() + "/" + name + "_" + fileFileName;
            uploadfile = new File(savePath, saveFileName);
            if (!uploadfile.getParentFile().exists()) {
                uploadfile.getParentFile().mkdirs();
            }
            FileOutputStream fos = null;
            FileInputStream fis = null;
            try {
                fos = new FileOutputStream(uploadfile);
                fis = new FileInputStream(file);
                byte[] buffers = new byte[1024];
                int len = 0;
                while ((len = fis.read(buffers)) != -1) {
                    fos.write(buffers, 0, len);
                }
            } finally {
                fos.close();
                fis.close();
            }
            this.getHttpServletResponse().getWriter().print(saveFileName);
    
        }
    
        /*
        * 此处省略getter和setter方法;
        */
    }
    

    struts2的xml配置

    <package name="test" extends="struts-base" namespace="/test">
        <action name="uploadFile"  class="TestAction" method="uploadFile" />
    </package>

    注意:
    plupload的几个函数,上传前,上传中,上传后,以及获取后台返回值的函数。

  • 相关阅读:
    Vmware
    Centos8
    Jmeter系列(37)- 详解 ForEach控制器
    【解决】k8s 1.15.2 镜像下载方案
    【解决】MacOS下 Python3.7 使用 pyinstaller 打包后执行报错 Failed to execute script pyi_rth__tkinter
    【解决】venv 的名字在 zsh prompt 中不显示
    【解决】could not find an available, non-overlapping IPv4 address pool among the defaults to assign to the network
    《Linux 性能优化实战—倪朋飞 》学习笔记 CPU 篇
    【解决】MongoDB 线上业务处理,数据去重脚本实现
    【解决】docker 容器中 consul集群问题处理
  • 原文地址:https://www.cnblogs.com/Kevin-1992/p/12608444.html
Copyright © 2020-2023  润新知