ApiCloud 查看文件(通过第三方应用打开)

  • Post author:
  • Post category:其他


大致逻辑是 通过 fs 清空本地的一个文件夹地址,download下载文件 然后把文件保存进去之后,通过docReader打开即可(下面有效果图可以看看满不满足你的需求)

// 预览文件 item:单个文件对象
function filePreview(item) {
	var { type: resType, dirId, resId, bucketId, title, fileId } = item;
	//resType == 'PDF' || resType == 'PPT' || resType == 'EXCEL' || resType == 'WORD'||resType == 'TXT' || resType == 'IMAGE';这是我目前用到的类型,如果你有别的类型话也可以试试能不能用,如果不可以那就得自己写win了

	operationFolder(URL + fileId, title); 
}
//删除对应文件夹下类容?
function operationFolder(fileUrl, fileName) { 
	//下载处理
	var fs = api.require('fs');
	//文件路径
	var localPath = api.cacheDir + '/personalDocuments/' + fileName;
	console.log(localPath);
	fs.rmdir(
		{
			path: api.cacheDir + '/personalDocuments', //删除本地文件夹
		},
		function (ret, err) {
			// console.log(JSON.stringify(ret) + '\n' + JSON.stringify(err));
			//下载再打开
			downloadFile(fileUrl, localPath);
		}
	);
}
//下载文件
function downloadFile(fileUrl, localPath) {
	api.showProgress({
		title: '文件加载中... ',
	});
	//下载附件 传参可以具体去看api:https://docs.apicloud.com/Client-API/api#17
	api.download(
		{
			url: fileUrl,//下载地址
			encode: false,//是否对url进行编码
			savePath: localPath,//存储路径,不传时使用自动创建的路径
			report: true,//下载过程是否上报
			cache: true,//是否使用本地缓存
			allowResume: true,//是否允许断点续传
		},
		function (ret, err) {
			// console.log(JSON.stringify(ret) + '\n' + JSON.stringify(err));
			if (ret.state == 1) {
				api.hideProgress();
				//下载成功  打开文件
				openFile(localPath);
			} else if (ret.state == 2) {
				api.hideProgress();
				openToast('文件加载失败');
			}
		}
	);
}

//打开文件
function openFile(fileUrl) { 
	var docReader = api.require('docReader');
	docReader.open(
		{
			path: fileUrl,
		},
		function (ret, err) {
			if (ret.status) {
                //Android 这里就会弹出系统的第三方软件弹框,ios内置会直接打开
				// console.log(JSON.stringify(ret)); 
			} else {
				// console.log(JSON.stringify(err));
				if (err.code == 2) {
					openToast('文件格式不支持');
				} else if (err.code == 1) {
					openToast('文件不存在');
				}
			}
		}
	);
} 




版权声明:本文为ssoutlook原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。