关于Ext Js 4的inputStream形式 ftp 文件下载(ajax方式)

本文探讨了如何使用Ext Js 4通过ajax方式实现ftp文件下载。介绍了从项目目录直接下载到利用FTPClient进行下载的过程,并讨论了Extjs文件下载的常见方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

做文件下载做了好久,一开始的是在项目目录下的上传下载,很容易实现,各种封装方法简单快捷,后来是转手ftp,用的FTPClient,也有点坎坷,最后又死在了Extjs上面,废话不多说,说说网上大家给的方法:

//1.链接形式
window.location.href='orderAttachDownload.action?filePath='+rec.get('filePath');
//直接用脚本跳转,后台请求通过struts返回inputStream+文件名,配置好附件类型,此处如果请求成功,则会弹出下载对话框
但是这种方法存在的问题在于,如果文件的路径是错的,则返回的inputstream为null,接而跳转的页面则是struts报错页面,对于错误的提示也不好控制

//2.网上流传的ajax请求的写法,此处仅仅适用于文件路径为项目路径(文件上传与下载都在tomcat部署的目录下,则可直接返回realPath进行下载)
Ext.Ajax.request({  
        url:'getPath.action',  
        success:function(res){  
            var obj = Ext.decode(res.responseText);  
            //console.log(obj);//可以到火狐的firebug下面看看obj里面的结构  
            //加入getPath返回的json为{'path':'upload/abc.jpg'}  
            window.location.href = obj.path;//这样就可以弹出下载对话框了  
        }  
    });  
此种方法并不适用于返回文件流形式的下载,对于ftp的下载,无法直接返回一个路径,如果是直接缓存成temp文件,更没有必要了吧

    if (!Ext.fly('downloadAttachFileForm')) {// 生成一个弹出对话框,以提供下载
            var frm = document.createElement('form');
            frm.id = 'downloadAttachFileForm';
            frm.style.display = 'none';
            document.body.appendChild(frm);
    }
    Ext.Ajax.request({// 请求附件下载
        url : "orderAttachDownload.action",
        isUpload : true,
        form : Ext.fly('downloadAttachFileForm'),
        method : 'POST',
        params : {
            filePath : rec.get('filePath')// 附件的路径
        },
        success : function(response) {// 文件不存在返回的json:{"success":"false","message":"文件不存在"}</code>
         var result = Ext.decode(response.responseText);
            if (result.success=='false') {
                Ext.Msg.alert('提示',result.message);
            }
        }


小白一枚,如有不对的地方还望大家指教

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值