文件上传,下载

一.面板上传该上传方式支持一次上传多个文件:使用说明:1.引入上传面板
var attachmentPanel = Ext.create("BeidaSoft.XTGL.attachment.AttachmentPanel", {
    height : 200,
    baseParams : {
        tableName : "test", // 业务表表名
        recordID : "testRecordID", // 业务表主键
        extParam : ‘AAAAA‘ // 面板标识,用于一个功能使用多个上传控件,对上传附件做区分
    }
});
2.界面展示

3.数据保存

attachmentPanel.baseParams.recordID = "testRecordID";
attachmentPanel.baseParams.tableName = "test";
attachmentPanel.baseParams.extParam = "AAAAA";
attachmentPanel.Save();

二.按钮上传

该上传方式一次只能上传一个文件

1.在js文件中加入var attachmentButton = Ext.create(
                "BeidaSoft.XTGL.attachment.AttachmentButtonN", {
                    isSingle : true,
                    fileTypes : "*.gif;*.pdf;*.jpg;*.doc;*.xls;*.docx;*.xlsx;*.rar;*.zip;*.png;*.rm;*.rmvb;*.avi;*.wmv;*.mp3",
                    scale : ‘medium‘,
                    id : ‘attachmentButton‘,
                    cellCls : ‘labelbutton‘,
                    baseParams : {
                        extParam : ‘AAAAA‘
                    },

                    listeners : {
                        uploadsuccess : function(serverData) {
                            if (serverData.success = ‘true‘) {
                                Ext.Ajax.request({
                                    url : ‘/sfjcgl/lzbahjwzhgl/zhgl/getFileName‘,
                                    success : function(r) {
                                        var data = Ext.decode(r.responseText);
                                        if (data.fileName
                                                && data.fileName.length
                                                && data.fileName.length > 0) {
                                            var lxgb = data.fileName[data.fileName.length
                                                    - 1];
                                            Ext.getCmp(‘FJ‘).show();
                                            Ext.getCmp(‘FJ‘).setValue(lxgb);
                                            Ext.getCmp("DeleteFile")
                                                    .setVisible(true);
                                        }
                                    },
                                    failure : function(r) {
                                        Ext.Msg.alert("提示", "查询失败!");
                                    }
                                });
                            } else {
                                Ext.Msg.alert("提示", "上传失败!");
                            }
                        }
                    }
                });
        this.attachmentButton = attachmentButton;

将它单独作为一个form

var form2 = new Ext.form.FormPanel({
            baseCls : "",
            width : "99%",
            layout : "form",
            id : "form2",
            items : [{
                baseCls : "",
                layout : ‘hbox‘,
                items : [{
                            xtype : ‘label‘,
                            width : "15%",
                            text : ‘具体内容:‘,
                            name : "具体内容",
                            fieldLabel : "具体内容",
                            labelStyle : "font-size:‘5px‘",
                            style : {
                                textAlign : ‘right‘
                            }
                        }, {
                            xtype : ‘label‘,
                            html : "<span id=‘DownloadFile‘></span>"
                        }, {
                            layout : ‘hbox‘,
                            xtype : ‘textfield‘,
                            width : 200,
                            id : ‘FJ‘
                        }, {
                            xtype : ‘button‘,
                            id : "DeleteFile",
                            text : "删除附件",
                            listeners : {
                                "click" : function() {
                                    Ext.Ajax.request({
                                        url : "/sfjcgl/lzbahjwzhgl/zhgl/deleteAttachment",
                                        params : {
                                            recordId : me.PXBID,
                                            tableName : ‘SFJC08‘
                                        },
                                        success : function(r) {
                                            Ext.getCmp("DeleteFile")
                                                    .setVisible(false);
                                            Ext.getCmp(‘FJ‘).setValue(‘‘);
                                            Ext.Msg.alert("提示", "附件删除成功!");
                                        },
                                        failure : function(r) {
                                            Ext.Msg.alert("提示", "删除附件失败!");
                                        }
                                    });
                                }
                            }
                        }, attachmentButton]
            }]
        });
        Ext.getCmp("DeleteFile").setVisible(false); // 隐藏删除按钮

点击保存时

Ext.Ajax.request({
                            url : ‘/sfjcgl/lzbahjwzhgl/zhgl/savedata?theme=none‘,
                            params : params,
                            success : function(response) {
                                var data = Ext.decode(response.responseText);
                                if (data.success == ‘true‘) {
                                    Ext.Msg.alert("提示", "操作成功!");
                                } else {
                                    Ext.Msg.alert("提示", "操作失败!");
                                }
                                attachmentButton.baseParams.recordID = data.uuid;
                                attachmentButton.baseParams.tableName = "SFJC08";
                                attachmentButton.baseParams.extParam = "AAAAA";
                                attachmentButton.Save();
                                me.up("window").destroy();
                                me.onPanelSuccessClose();
                            },
                            failure : function(response) {
                                Ext.Msg.alert("提示", "操作失败!");
                            }
                        });

2.在java文件中下载删除附件,取附件名称

/**
     * 下载附件
     */
    @Action
    public void download(){
        HttpServletRequest request = ActionContext.getActionContext().getHttpServletRequest();
        HttpServletResponse response = ActionContext.getActionContext().getHttpServletResponse();
        String fid = request.getParameter("fid");
        String downSql = "select FILEPATH,FILENAME from S_ATTACHMENT_FILE where FID = ‘" + fid +"‘";
        Map<String, Object> downObj = jdbcOperations.queryForMap(downSql);
        String path = downObj.get("FILEPATH").toString();
        String filename = downObj.get("FILENAME").toString();
        File file = new File(path);
        // 以流的形式下载文件
        try {
            InputStream fis = new BufferedInputStream(new FileInputStream(path));
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            // 清空response
            response.reset();
            // 设置response的Header
            response.addHeader("Content-Disposition", "attachment;filename=" + new String(filename.getBytes("gbk"), "iso-8859-1"));
            response.addHeader("Content-Length", "" + file.length());
            OutputStream toClient = new BufferedOutputStream(response.getOutputStream());
            response.setContentType("application/octet-stream");
            toClient.write(buffer);
            toClient.flush();
            toClient.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    // 取附件名称
        @Action
        public String getFileName() {
            HttpServletRequest request = ActionContext.getActionContext()
                    .getHttpServletRequest();
            HttpSession session = request.getSession();
            Map<String, ArrayList<String>> fileNameMap = new HashMap<String, ArrayList<String>>();

            ArrayList<Map<String, Object>> fileArray = new ArrayList<Map<String, Object>>();
            Object sessionObj = session.getAttribute("uploadList");
            if (null != sessionObj) {
                fileArray = (ArrayList<Map<String, Object>>) sessionObj;
                ArrayList fileNameArrayList = new ArrayList<String>();
                for (Map<String, Object> map : fileArray) {
                    if (null != map.get("filename")) {
                        fileNameArrayList.add((String) map.get("filename"));
                    }
                }
                fileNameMap.put("fileName", fileNameArrayList);
            }

            return Json.encode(fileNameMap);
        }
        @Action
        public void deleteAttachment() {
            HttpServletRequest request = ActionContext.getActionContext()
                    .getHttpServletRequest();
            String fileID = "";
            String recordId = request.getParameter("recordId");
            String tableName = request.getParameter("tableName");
            String ftype = request.getParameter("ftype");

            String querySQL = null;
            List<Map<String, Object>> list = null;
            if (null != ftype && !"".equals(ftype)) {
                querySQL = "select A1.FID from S_ATTACHMENT_RELATION A1 LEFT JOIN S_ATTACHMENT_FILE A2 ON A1.FID = A2.FID WHERE A1.TABLENAME=? AND A1.RECORDID = ? AND A2.FTYPE = ?";
                list = jdbcOperations.queryForList(querySQL, tableName, recordId,
                        ftype);
            } else {
                querySQL = "select FID from S_ATTACHMENT_RELATION WHERE TABLENAME=? AND RECORDID = ?";
                list = jdbcOperations.queryForList(querySQL, tableName, recordId);
            }
            if (list.size() > 0) {
                fileID = list.get(0).get("FID").toString();
            }

            /**
             * 删除保存的上传文件
             *
             * 功能待实现
             *
             */
            if (fileID != null && !"".equals(fileID) && !"null".equals("fileID")) {
                /**
                 * 删除文件记录表数据
                 */
                String deleteSql = "DELETE FROM S_ATTACHMENT_FILE WHERE FID = ? ";
                jdbcOperations.update(deleteSql, fileID);

                /**
                 * 删除数据文件关联表
                 */
                deleteSql = "DELETE FROM S_ATTACHMENT_RELATION WHERE FID = ? ";
                jdbcOperations.update(deleteSql, fileID);
            }
        }
时间: 2024-10-28 22:56:45

文件上传,下载的相关文章

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

使用Paramiko实现SSH登陆,文件上传下载

1,SSh登陆命令行实现: #!/usr/bin/env python # encoding: utf-8 import paramiko private_key_path = '/Users/aolens/.ssh/id_rsa' key = paramiko.RSAKey.from_private_key_file(private_key_path) ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.Aut

文件上传下载—servlet API实现

servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servl

文件上传下载

1.文件上传 文件上传下载本质是通过Socket的字节流来传输数据的.所以,对于文件上传,我们可以从HttpRequest对象获取输入流,进而获取上传文件的内容.但是采用ServletAPI并不能获取获取对应文件的字节流,而是获取整个Socket的字节流,里面包括提交的参数.上传文件内容以及其他附加信息. Servlet API上传文件,代码如下 protected void doPost(HttpServletRequest request, HttpServletResponse respo

Hadoop之HDFS原理及文件上传下载源码分析(下)

上篇Hadoop之HDFS原理及文件上传下载源码分析(上)楼主主要介绍了hdfs原理及FileSystem的初始化源码解析, Client如何与NameNode建立RPC通信.本篇将继续介绍hdfs文件上传.下载源解析. 文件上传 先上文件上传的方法调用过程时序图: 其主要执行过程: FileSystem初始化,Client拿到NameNodeRpcServer代理对象,建立与NameNode的RPC通信(楼主上篇已经介绍过了) 调用FileSystem的create()方法,由于实现类为Dis

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项目地址:http://www.51aspx.com/code/MSDCArtMengFileUpload 咨询qq:286275658 演示程序下载地址:http://pan.baidu.com/s/1geVfmcr 服务器端运行效果图: 服务器端配置文件: <?xml version="1.

开源项目OkHttpPlus——支持GET、POST、UI线程回调、JSON格式解析、链式调用、文件上传下载

OkHttpPlus介绍 项目地址:https://github.com/ZhaoKaiQiang/OkHttpPlus 主要功能:OkHttp封装,支持GET.POST.UI线程回调.JSON格式解析.链式调用.小文件上传下载及进度监听等功能 为什么要写这么一个库呢? 首先,是因为OkHttp在4.4之后已经作为底层的Http实现了,所以OkHttp这个库很强大,值得我们学习. 其次,在我看来,OkHttp使用起来不如Volley方便,OkHttp的回调都是在工作线程,所以如果在回调里面操作V

.Net Core 图片文件上传下载

当下.Net Core项目可是如雨后春笋一般发展起来,作为.Net大军中的一员,我热忱地拥抱了.Net Core并且积极使用其进行业务的开发,我们先介绍下.Net Core项目下实现文件上传下载接口. 一.开发环境 毋庸置疑,宇宙第一IDE VisualStudio 2017 二.项目结构 FilesController 文件上传下载控制器 PictureController 图片上传下载控制器 Return_Helper_DG 返回值帮助类 三.关键代码 1.首先我们来看Startup.cs

ssh框架文件上传下载

<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Author" content="BuNuo"> <meta name="Keywords" content="文件上传下载"> <meta name="

SpringMVC文件上传下载

在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/qixiaoyizhan/p/5819392.html 今天我们来讲讲spring mvc中的文件上传和下载的几种方法. 首先附上文件目录->我们需要配置的我做了记号-> 一.文件上传 首先为了方便后续的操作,以及精简代码,我们在Utils包下封装一个文件上传下载的帮助类: Files_Helper