赞
踩
目录
使用的是 HTML5产业联盟提供的方法
通过plus.io可获取文件系统管理对象。
IO模块管理本地文件系统,用于对文件系统的目录浏览、文件的读取、文件的写入等操作。
IO里面有个方法
plus.io.requestFileSystem( type, succesCB, errorCB );
可取plus.io下的常量,如plus.io.PRIVATE_DOC、plus.io.PUBLIC_DOCUMENTS等。
- plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
- console.error('请求文件系统成功', fs);
- },
- function(err) {
- console.error('请求文件系统失败', err);
- }
- );
-
请求成功返回的fs里面有个属性 root, fs.root是根目录操作对象DirectoryEntry,里面提供了创建打开文件方法
entry.getFile( path, flag, succesCB, errorCB );
- plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
- // 创建文件
- fs.root.getFile('myTxt/1..txt', {
- create: true
- }, function(fileEntry) {
- console.error('创建文件成功', fileEntry);
- },
- function(err) {
- console.error('创建文件失败', err);
- });
- },
- function(err) {
- console.error('请求文件系统失败', err);
- });
- }
请求成功返回的 fileEntry 里面有个方法 createWriter
entry.createWriter( succesCB, errorCB );
- plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
- // 创建文件
- fs.root.getFile('myTxt/1..txt', {
- create: true
- }, function(fileEntry) {
- // 创建写入流
- fileEntry.createWriter(function(writer) {
- console.error('创建写入流成功', writer);
- },
- function(err) {
- console.error('创建写入流失败', err);
- });
- },
- function(err) {
- console.error('创建文件失败', err);
- });
- },
- function(err) {
- console.error('请求文件系统失败', err);
- });
- }

请求成功返回的 writer 里面有个方法 write代码
writer.write( data );
注意: 如果文件中已经存在数据,新写入的数据将覆盖已有数据。
返回的 writer 里面还有个 onwriteend 回调函数,文件写入操作完成时的回调函数
- plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
- // 创建文件
- fs.root.getFile('myTxt/1..txt', {
- create: true
- }, function(fileEntry) {
- // 创建写入流
- fileEntry.createWriter(function(writer) {
- // 设置写入内容
- writer.write('123');
- // 写入完成回调
- writer.onwriteend = function(res) {
- console.log('写入文件成功', res.target.fileName);
- };
- // 写入错误回调
- writer.onerror = function(err) {
- console.error('写入文件失败', err);
- };
- },
- function(err) {
- console.error('创建写入流失败', err);
- });
- },
- function(err) {
- console.error('创建文件失败', err);
- });
- },
- function(err) {
- console.error('请求文件系统失败', err);
- });

返回的 res.target.fileName,就是操作文件的路径
利用uniapp提供的上传方法 uni.uploadFile,也可以利用其它的请求方式比如 Ajax 上传文件,根据返回的 res.target.fileName 文件路径,赋值进去就可以了
- const pathUrl = res.target.fileName
- if (pathUrl!= '') {
- uni.uploadFile({
- url: '上传地址API',
- filePath: pathUrl,
- name: "file",
- success: (uploadFileRes) => {
- console.log(uploadFileRes, '返回的下载地址');
- },
- complete: () => {
-
- },
- });
- }
- Download() {
- // 请求文件系统
- plus.io.requestFileSystem(plus.io.PRIVATE_DOC, function(fs) {
- // 创建文件
- fs.root.getFile('myTxt/1..txt', {
- create: true
- }, function(fileEntry) {
- // 创建写入流
- fileEntry.createWriter(function(writer) {
- // 设置写入内容
- writer.write('123');
- // 写入完成回调
- writer.onwriteend = function(res) {
- console.log('写入文件成功', res.target.fileName);
- const pathUrl = res.target.fileName
-
- if (pathUrl!= '') {
- uni.showLoading();
- uni.uploadFile({
- url: '上传地址API',
- filePath: pathUrl,
- name: "file",
- success: (uploadFileRes) => {
- console.log(uploadFileRes, '返回的下载地址');
- },
- complete: () => {
- uni.hideLoading();
- },
- });
- }
- };
- // 写入错误回调
- writer.onerror = function(err) {
- console.error('写入文件失败', err);
- };
- },
- function(err) {
- console.error('创建写入流失败', err);
- });
- },
- function(err) {
- console.error('创建文件失败', err);
- });
- },
- function(err) {
- console.error('请求文件系统失败', err);
- });
- }

赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。