Android(h5+)plus.io下载文件创建指定目录名并转移到指定目录下面demo

/** 
	@param 下载某个文件
**/
const createDownload = (options) => {
	var dtask = plus.downloader.createDownload(
		"https://lmg.jj20.com/up/allimg/1112/112GPR626/1Q12FR626-9-1200.jpg", options,
		function(d, status) {
			if (status == 200) {
				let file = new Object();
				file = {
					...{
						url: d.url, //下载的文件路径
						filename: d.filename, //下载成功保存的临时目录
						timeout: d.timeout, //下载文件所需的时间
					}
				};
				Filestart(file);
			} else {
				plus.nativeUI.confirm(`文件下载失败喔!${status}`, function(e) {
					console.log(e);
				});
			}
		});
	dtask.start();
}

/** 
@param 通过文件保存目录获取文件路径然后进行操作,写入到Android文件目录
 **/
const Filestart = (params) => {
	plus.io.resolveLocalFileSystemURL(params.filename, function(entry) {
		/** 
		@param {entry(可通过对象操作文件)}
		@param {evt.target.fileName(为存储到的文件路径)}
		 **/
		entry.file(function(file) {
			var fileReader = new plus.io.FileReader();
			//读取文件格式为utf-8
			fileReader.readAsText(file, 'utf-8');
			fileReader.onloadend = function(evt) {
				console.log(evt.target.fileName);
				creatDirectory("_doc/这是保存的目录/", evt.target.fileName);
			}
		});
	}, function(e) {
		plus.nativeUI.confirm(`文件创建写入失败喔!${e.message}`, function(ev) {
			console.log(ev);
		});
	});
}

/**
    @param 创建目录必须在沙盒环境下进行,并且创建的目录保存在沙盒目录下
	@param 我创建的文件目录路径为storage/emulated/0/Android/data/io.dcloud.HBuilder/apps/HBuilder/doc/
	@param 在应用的系统保存位置创建目录并指定目录名
	@param {params(要创建的目录名)}
 **/
const creatDirectory = (params, path) => {
	plus.io.resolveLocalFileSystemURL("_doc/",
		function(entry) {
			entry.getDirectory(params, {
				create: true, //目录存在则覆盖,不存在则创建
				exclusive: false
			}, function(dir) {
				FilesWriter(params, path);
				plus.nativeUI.confirm(`目录创建成功!${JSON.stringify(params)}`, function(ev) {
					console.log(ev);
				});
			}, function(e) {
				console.log("创建失败:" + e.message);
			});
		},
		function(e) {
			console.log("Resolve file URL failed: " + e.message);
		});
}

/** 
@param 注:转移的文件不能重名或者重复负责error code错误码报10(执行失败)  
@param 把文件转移到指定文件目录下面 
**/
const FilesWriter = (params, path) => {
	let newName = new Object();
	//获取文件地址的文件操作对象
	plus.io.resolveLocalFileSystemURL(path, function(entry) {
		//要移到目录下面的沙盒环境目录也就是父目录
		plus.io.resolveLocalFileSystemURL("_doc/", function(fs) {
			//最终移到的目录
			fs.getDirectory('这是保存的目录', {
				create: true,
				exclusive: false
			}, function(fe) {
				console.log(fe.fullPath);
				entry.moveTo(fe, entry.name, function(res) {
					plus.nativeUI.confirm(`转移成功!${res.fullPath}`, function(ev) {
						console.log(ev);
					});
				}, function(e) {
					console.log(e);
				})
			}, function(err) {
				console.log(err)
			})
		})
	})
}

export default {
	createDownload,
	Filestart,
	creatDirectory,
	FilesWriter
}

导入上面代码片段并新建为js文件

<template>
	<view class="content">
		<button @click="down">开始下载并写入</button>
	</view>
</template>

<script>
	import yx_plus from '../../yx_plus/yx_plus.js';
	export default {
		data() {
			return {
				options: {}, //下载参数
				files: [], //文件目录
			}
		},
		methods: {
			/** 
			@param 下载某个文件并写入到指定文件夹
			 **/
			down() {
				// #ifdef APP-PLUS
				/**
				@param {method(下载类型)}
				@param {filename(保存文件路径仅支持以"_downloads/"、"_doc/"、"_documents/"开头的字符串。 文件路径以文件后缀名结尾(如"_doc/download/a.doc")表明指定保存文件目录及名称,以“/”结尾则认为指定保存文件的目录)}
				@param {priority(下载任务优先级)}
				@param {timeout(下载任务超时时间)}
				@param {retry(下载任务重试次数)}
				@param {retryInterval(下载任务重试间隔时间)}
				 **/
				this.options = {
					...{
						method: 'GET',
						priority: 1,
						timeout: 500,
						retry: 1,
						retryInterval: 3000,
					}
				};
				yx_plus.createDownload(this.options);
				// #endif
			}
		}
	}
</script>

<style scoped lang="less">
	.content {
		width: 100%;

		button {
			width: 95%;
			height: 90rpx;
			background-color: #00aaff;
			display: flex;
			justify-content: center;
			align-items: center;
			letter-spacing: 1px;
			font-size: 30rpx;
			font-weight: 500;
			color: #fff;
			margin: 20px auto;
		}
	}
</style>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值