赞
踩
Cordova 提供了一个 fileTransfer 插件,通过这个插件我们很方便地实现文件的传输操作(上传、下载)。
1,添加FileTransfer插件
首先我们要在“终端”中进入工程所在的目录,然后运行如下命令添加插件:
cordova plugin add cordova-plugin-file-transfer
2,文件下载
- <!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 图片上传到网络服务器上。
- <!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 回调方法,我们可以监听到上传、下载的实时进度。
- 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。