如何提供下载文件?

时间:2014-03-24 09:48:15

标签: sencha-touch download hybrid-mobile-app

我有问题。在我的sencha触摸应用程序中,我有列表项目,如.pdf,.png,...如果用户点击其中一个文件应该在他的移动设备上下载。 我怎样才能做到这一点?我不知道:-)

感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

您可以使用phonegap文件api下载文件,如果您使用的是sencha touch 2.3或更高版本,请按照下面的步骤操作。

  1. 通过在项目根目录下执行以下命令在sencha项目中安装phonegap,此命令在项目根目录中创建phonegap文件夹。

    sencha phonegap init

  2. 您需要通过在phonegap文件夹中执行以下两个命令来安装两个phonegap插件来处理文件api。

    $ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file.git

    $ phonegap local plugin add https://git-wip-us.apache.org/repos/asf/cordova-plugin-file-transfer.git

  3. 现在你可以在sencha touch中开始处理文件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(您希望将文件存储在手机中的位置)&以上功能的网址。

    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 docs

    Ext.device.filesystem.Cordova

    Ext.device.filesystem.FileEntry


    如果您使用的是sencha touch 2.2或更低版本,则只需更改而不是使用sencha类,您需要直接使用phonegap api。

    阅读file system& File download关注phonegap文档。

答案 1 :(得分:0)

Sencha基本上运行HTML,CSS& JS。使用Sencha而不是使用Sencha实现它,就像在HTML中执行它一样,然后集成到您的应用程序中。

例如:<a href="Homework.pdf" target="_blank">Homework</a>

答案 2 :(得分:0)

试试这个

document.location = url;

答案 3 :(得分:0)

尝试以下可能对您有用的代码。

var newWindow = window.open('filepath','_ self'); // filepath是带扩展名的文件的路径。