Sencha touch 如何提供文件供下载?

Sencha touch 如何提供文件供下载?,sencha-touch,download,hybrid-mobile-app,Sencha Touch,Download,Hybrid Mobile App,我有个问题。在我的sencha touch应用程序中,我有一些列表项,如.pdf、.png、。。。若用户点击其中一个,那个么文件应该下载到他的移动设备上。 我该怎么做?我不知道:-) 感谢您的帮助。Sencha基本上通过HTML、CSS和JS进行操作。与其使用Sencha实现,不如像在HTML中那样实现它,然后集成到应用程序中 例如:试试这个 document.location=url尝试以下代码,它可能会对您有所帮助 var newWindow=window.open('filepath','

我有个问题。在我的sencha touch应用程序中,我有一些列表项,如.pdf、.png、。。。若用户点击其中一个,那个么文件应该下载到他的移动设备上。 我该怎么做?我不知道:-)


感谢您的帮助。

Sencha基本上通过HTML、CSS和JS进行操作。与其使用Sencha实现,不如像在HTML中那样实现它,然后集成到应用程序中

例如:

试试这个


document.location=url

尝试以下代码,它可能会对您有所帮助


var newWindow=window.open('filepath','u self')//WARE filepath是扩展名为的文件路径。

您可以使用phonegap文件api下载文件,如果您使用的是sencha touch 2.3或更高版本,只需遵循以下步骤即可

  • 通过在项目根目录下执行以下命令,在sencha项目中安装phonegap,该命令将在项目根目录下创建phonegap文件夹

    sencha phonegap init

  • 您需要安装两个phonegap插件,通过在phonegap文件夹内执行以下两个命令来使用文件api

    $phonegap本地插件添加

    $phonegap本地插件添加

  • 现在,您可以在SenchaTouch中开始使用文件api,并且可以遵循我在我的一个项目中使用的以下代码

    若要下载文件,首先需要读取设备文件系统,然后使用文件系统可以下载文件

    getFileSystem : function(){
        var me =this;
        Ext.Viewport.mask({ 
            xtype: 'loadmask', 
            message: 'Downloading files..' 
        });
        var extfs = Ext.create("Ext.device.filesystem.Cordova");
        extfs.requestFileSystem({
             type: window.PERSISTENT,
             size: 1024 * 1024,
             success: function(fSys) {
                 window.fileSys = fSys;
                 Ext.Viewport.unmask();
                 me.fileDownload("myfolder/filename.png","http://someurl");
             },
             failure: function(error){
                alert(error);
                Ext.Viewport.unmask();
            }      
        });
    }
    
    我在上面的函数中传递fileLocation(您想在手机中存储文件的位置)和url

    fileDownload: function(fileLocation,Url){
        Ext.Viewport.mask({ 
            xtype: 'loadmask', 
            message: 'Downloading files..' 
        });
        var me = this;
        var fSys = window.fileSys
        if(fSys){
            var file = Ext.create('Ext.device.filesystem.FileEntry', 
                        fSys.fs.root.toURL() + fileLocation, fSys);
                        
            file.download({
                source: Url,
                success: function(entry){
                    Ext.Msg.alert('SUCCESS', 'Image successfully downloaded');
                    Ext.Viewport.unmask();
                },
                failure: function(error){
                    Ext.Msg.alert('ERROR', 'Download failed');
                    Ext.Viewport.unmask();
                }      
            });
        }
    }
    
    现在可以在
    internalMemorycard/myfolder/filename.png查看图像

    Sencha文档


    如果您使用的是sencha touch 2.2或更低版本,唯一的改变是不使用sencha类,您需要直接使用phonegap api


    阅读并遵循phonegap文档。

    您好,谢谢。问题是我不想在浏览器中打开它。我想让用户直接下载文件。:-)谢谢你的评论,但这只是打开了一个新窗口。不是我要找的。嘿,谢谢!但问题是客户端(移动应用程序)不应该知道文件在服务器中的存储位置。意味着服务器必须以某种方式将数据发送到客户端。我说的对吗?我们需要在服务器上生成pdf文件。并将该文件路径发送到客户端。