Cordova - fileTransfer插件的使用详解(实现文件上传、下载)

Cordova 提供了一个 fileTransfer 插件,通过这个插件我们很方便地实现文件的传输操作(上传、下载)。 

1,添加FileTransfer插件

 

首先我们要在“终端”中进入工程所在的目录,然后运行如下命令添加插件:

 

 

cordova plugin add cordova-plugin-file-transfer


2,文件下载

 

下面代码通过url地址下载网络上的图片到本地( iOS系统保存在  Documents 目录下)
原文:Cordova - fileTransfer插件的使用详解(实现文件上传、下载)

 

<!DOCTYPE html>
<html>
    <head>
        <title>Capture Photo</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
        <script type="text/javascript" charset="utf-8">
          //下载图片
          function downloadImage(){
 
            window.requestFileSystem(LocalFileSystem.PERSISTENT,0,function (fs) {
 
              console.log('打开的文件系统: '+fs.name);
              var url = 'http://www.hangge.com/blog/images/logo.png';
              fs.root.getFile('hangge.png', {create:true,exclusive:false},
              function (fileEntry){
                  download(fileEntry,url);
              }, onErrorCreateFile);
 
            }, onErrorLoadFs);
          }
 
          //下载文件
          function download(fileEntry,uri) {
            var fileTransfer = new FileTransfer();
            var fileURL=fileEntry.toURL();
 
            fileTransfer.download(uri,fileURL,function (entry) {
                    console.log("下载成功!");
                    console.log("文件保存位置: "+entry.toURL());
                },
                function (error) {
                    console.log("下载失败!");
                    console.log("error source "+error.source);
                    console.log("error target "+error.target);
                    console.log("error code"+error.code);
                },
                null, // or, pass false
                {
                    //headers: {
                    //    "Authorization": "Basic dGVzdHVzZXJuYW1lOnRlc3RwYXNzd29yZA=="
                    //}
                }
            );
          }
 
          //文件创建失败回调
          function  onErrorCreateFile(error){
            console.log("文件创建失败!")
          }
 
          //FileSystem加载失败回调
          function  onErrorLoadFs(error){
            console.log("文件系统加载失败!")
          }
        </script>
    </head>
    <body style="padding-top:50px">
        <button style="font-size:23px;" onclick="downloadImage();">下载图片</button>
    </body>
</html>

 

 

 

 

 

3,上传文件

下面代码点击按钮后,将 Documents 目录下的 hangge.png 图片上传到网络服务器上。

原文:Cordova - fileTransfer插件的使用详解(实现文件上传、下载)
 
 
 
 

 

<!DOCTYPE html>
<html>
    <head>
        <title>Capture Photo</title>
        <meta http-equiv="Content-type" content="text/html; charset=utf-8">
        <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
        <script type="text/javascript" charset="utf-8">
          //上传图片
          function uploadImage(){
            window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
 
              console.log('打开的文件系统: ' + fs.name);
              fs.root.getFile('hangge.png', { create: true, exclusive: false },
              function (fileEntry) {
                  upload(fileEntry);
              }, onErrorCreateFile);
 
            }, onErrorLoadFs);
          }
 
          //上传文件
          function upload(fileEntry) {
            //获取文件的url路径地址
            var fileURL = fileEntry.toURL();
 
            //上传成功
            var success = function (r) {
                console.log("上传成功! Code = " + r.responseCode);
            }
 
            //上传失败
            var fail = function (error) {
                alert("上传失败! Code = " + error.code);
            }
 
            var options = new FileUploadOptions();
            options.fileKey = "file1";
            options.fileName = fileURL.substr(fileURL.lastIndexOf('/') + 1);
            options.mimeType = "text/plain";
 
            //上传参数
            var params = {};
            params.value1 = "test";
            params.value2 = "param";
            options.params = params;
 
            var ft = new FileTransfer();
            //上传地址
            var SERVER = "http://www.hangge.com/upload.php"
            ft.upload(fileURL, encodeURI(SERVER), success, fail, options);
          };
 
          //文件创建失败回调
          function  onErrorCreateFile(error){
            console.log("文件创建失败!")
          }
 
          //FileSystem加载失败回调
          function  onErrorLoadFs(error){
            console.log("文件系统加载失败!")
          }
        </script>
    </head>
    <body style="padding-top:50px">
        <button style="font-size:23px;" onclick="uploadImage();">上传图片</button>
    </body>
</html>

 

 

 

 

 

附:服务端代码(upload.php

 

<?
move_uploaded_file($_FILES["file1"]["tmp_name"],
    $_SERVER["DOCUMENT_ROOT"]."/uploadFiles/" . $_FILES["file1"]["name"]);
?>

 

 

 

4,获取传输实时进度
通过 FileTransfer 对象的 onprogress 回调方法,我们可以监听到上传、下载的实时进度。

 

 

原文:Cordova - fileTransfer插件的使用详解(实现文件上传、下载)
 

 

var ft = new FileTransfer();
//传输进度
ft.onprogress = function(progressEvent) {
    if (progressEvent.lengthComputable) {
        console.log("当前进度:"+progressEvent.loaded / progressEvent.total);
    }
};
//上传地址
var SERVER = "http://www.hangge.com/upload.php"
ft.upload(fileURL, encodeURI(SERVER), success, fail, options);

 

 

 

 

 

5,停止文件传输

通过 FileTransfer 对象的 abort() 方法可以中断当前进行的上传、下载操作。

 

ft.abort();

 

 

 

原文出自:www.hangge.com  原文链接:http://www.hangge.com/blog/cache/detail_1180.html

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值