cordova filetransfer插件——上传、下载文件
来源:互联网 发布:facetime是什么软件 编辑:程序博客网 时间:2024/05/22 12:28
介绍
FileTransfer对象提供给了一种将文件上传到服务器的方法,可以通过HTTP和HTTPS进行请求,可以传递一个由FileUploadOptions对象设定的可选参数给upload方法。上传成功后,系统会调用成功回调函数并传递一个FileUploadResult对象。如果出现错误,那么系统会调用错误回调函数并传递一个FileTransferError对象。
安装
cordova plugin add cordova-plugin-file-transfer
支持的平台
· Amazon Fire OS
· Android
· BlackBerry 10
· Browser
· Firefox OS**
· iOS
· Windows Phone 7 and 8*
· Windows
使用方法
这个插件定义了全局的FileTransfer,FileUploadOptions 构造函数。虽然在全局范围内,但是他们需要在deviceready事件之后才可用
document.addEventListener("deviceready", onDeviceReady, false);function onDeviceReady() { console.log(FileTransfer);}
属性
onprogress: 使用調用 `ProgressEvent`每当一个新的数据块传输。(函数)
方法
upload: 将文件发送到服务器。
download: 从服务器下载一个文档。
abort: 中止正在进行的传输。
示例
示例一:上传图片
index.html:
<!DOCTYPE html><html><head> <meta charset="UTF-8"/> <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> <meta name="format-detection" content="telephone=no"> <meta name="msapplication-tap-highlight" content="no"> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> <title>Hello World</title> <style> .line { padding: 5px; } #myImage { height: 200px; } </style></head><body><div class="app"> <div class="line"><button id="openLabrary">按钮</button></div> <div class="line"><img id="myImage"></img></div> <div class="line"><span id="text"></span></div></div><script type="text/javascript" src="cordova.js"></script><script type="text/javascript" src="js/index.js"></script></body></html>
index.js:
var app = { initialize: function() { document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); }, onDeviceReady: function() { this.receivedEvent(); }, $$: function(id) { return document.getElementById(id); }, receivedEvent: function(){ var getDomLabrary = this.$$('openLabrary'); var _this = this; getDomLabrary.onclick = function(){ // 打开图片库 navigator.camera.getPicture(onSuccess, onFail, { quality: 50, // 相片质量是50 sourceType : Camera.PictureSourceType.SAVEDPHOTOALBUM, // 设置从图片库获取 destinationType: Camera.DestinationType.FILE_URI // 以文件路径返回 }); function onSuccess(imageURI) { console.log(imageURI) _this.$$('myImage').src = imageURI; // 上传 _this.upload(imageURI); } function onFail(message) { alert('Failed because: ' + message); } } }, //使用FileTransfer插件,上传文件 upload(fileURL) { //上传成功 var success = function (r) { alert("上传成功! 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://10.1.10.53:8089/oss/UploadServlet" ft.upload(fileURL, encodeURI(SERVER), success, fail, options); }};app.initialize();
运行:
点击按钮,打开图片库,选择图片,显示
上传成功
备注:
这个上传的服务器路径:
var SERVER = "http://10.1.10.53:8089/oss/UploadServlet"
使用了一个.jsp文件写成的
示例二:下载图片
index.html:
<!DOCTYPE html><html><head> <meta charset="UTF-8"/> <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; img-src 'self' data: content:;"> <meta name="format-detection" content="telephone=no"> <meta name="msapplication-tap-highlight" content="no"> <meta name="viewport" content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width"> <title>Hello World</title> <style> .line { padding: 5px; } #myImage { height: 200px; } </style></head><body><div class="app"> <div class="line"><button id="download">下载</button></div> <div class="line"><img id="myImage"></img></div> <div class="line"><span id="text"></span></div></div><script type="text/javascript" src="cordova.js"></script><script type="text/javascript" src="js/index.js"></script></body></html>
index.js:
var app = { // Application Constructor initialize: function() { document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); }, // deviceready Event Handler onDeviceReady: function() { this.receivedEvent(); }, // get DOM $$: function(id) { return document.getElementById(id); }, receivedEvent:function() { var _this = this; var dlDom = this.$$('download'); dlDom.onclick = function() { _this.createFilePath(); } }, // 创建文件路径 createFilePath: function() { var _this = this; window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function(fs) { fs.root.getFile("downloadedImage.png", { create: true, exclusive: false }, function (fileEntry) { console.log(fileEntry); //调用fileTransfer插件,下载图片 _this.downLoadImg(fileEntry.nativeURL); }, function(err) { console.log(err); }); }, function(error) { console.log(error); }); }, // fileTransfer plugin downLoadImg: function(fileURL) { var _this = this; // 初始化FileTransfer对象 var fileTransfer = new FileTransfer(); // 服务器下载地址 var uri = encodeURI("http://avatar.csdn.net/7/E/0/1_michael_ouyang.jpg"); // 调用download方法 fileTransfer.download( uri, //uri网络下载路径 fileURL, //url本地存储路径 function(entry) { console.log("download complete: " + entry.toURL()); _this.$$('myImage').src = entry.toURL(); }, function(error) { console.log("download error source " + error.source); console.log("download error target " + error.target); console.log("upload error code" + error.code); } ); }};app.initialize();
运行:
点击按钮,下载图片
图片下载成功后,显示在页面上
备注:
控制台输出的fileEntry对象的内容
拿到这个图片在手机系统的路径
file:///data/user/0/com.abc.www/files/files/downloadedImage.png
现在打开手机的文件管理器,是找不到该图片的
因为我们没有设置持久化文件的保存路径,默认会保存在data里面
那么在config.xml中加上这一句代码
<preference name="AndroidPersistentFileLocation"value="Compatibility"/>
再启动应用下载图片,fileEntry对象的nativeURL变成了storage
file:///storage/emulated/0/downloadedImage.png
打开手机的文件管理器,查看下载回来的图片
- cordova filetransfer插件——上传、下载文件
- Cordova - fileTransfer插件的使用详解(实现文件上传、下载)
- Cordova文件传输插件fileTransfer
- Cordova文件传输插件fileTransfer
- ionic+angularJS+cordova(FileTransfer)上传图片【移动端】
- Phonegap FileTransfer 通过https协议上传文件
- Cordova插件实现文件下载对话框
- npm上传cordova插件
- Ionic学习笔记七 Cordova 文件下载插件的使用
- cordova camera插件——摄像头插件的使用及上传图片
- 小白专场——FileTransfer
- cordova 文件上传
- 极光推送Cordova插件—配置插件到Cordova项目
- 自定义Cordova插件—SweetAlertDialogPlugin
- Ionic— Cordova 插件开发
- Cordova文件下载
- 【翻译】【Ionic】上传,FileTransfer学习
- 文件上传和下载——文件上传(一)
- mybatis总结(分文件类型)
- 用Kotlin开发android平台语音识别,语义理解应用(olamisdk)
- PythonIO编程
- android之Toolbar使用详解
- java.lang.IllegalStateException: ApplicationEventMulticaster not initialized
- cordova filetransfer插件——上传、下载文件
- 如果图片路径或者名称是中文,如何在页面显示
- Linux pipe函数
- tensorflow 实战 猫狗大战(一)训练自己的数据
- 使用Runtime去运行命令行 CreateProcess error=193, %1 不是有效的 Win32 应用程序。
- Android Service完全解析,关于服务你所需知道的一切(上)
- tomcat下部署solr
- java根据模板导出PDF详细教程(无bug版)
- CENTOS7安装配置openVPN