HarmonyOS 鸿蒙Next 下载网络文件 request.download下载到本地的文件大小为0b且没有报错误码 日志正常
HarmonyOS 鸿蒙Next 下载网络文件 request.download下载到本地的文件大小为0b且没有报错误码 日志正常
更多关于HarmonyOS 鸿蒙Next 下载网络文件 request.download下载到本地的文件大小为0b且没有报错误码 日志正常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
downloadTask.on('complete', () => {
//将文件复制到文件夹中
const documentSaveOptions = new picker.DocumentSaveOptions(); // 创建文件管理器保存选项实例
documentSaveOptions.newFileNames = ["aaa.doc"]; // 保存文件名(可选)
const documentViewPicker = new picker.DocumentViewPicker;
documentViewPicker.save(documentSaveOptions)
.then(async (documentSaveResult) => {
// 获取到到图片或者视频文件的URI后进行文件读取等操作
let uri = documentSaveResult[0];
console.info('pub uri:' + uri)
// 沙箱路径文件
let sanFile = fs.openSync(this.localFilePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 将文件从沙箱路拷贝到公共路径
fs.copyFileSync(sanFile.fd, pubFile.fd)
console.log("-------")
})
console.log('下载完成')
})}
尝试下查看当前下载路径(沙箱路径–localFilePath)下,是否已经存在相同文件,当前版本调用这个api后文件若已下载,重复调用会报13400002
//下载
downLoad(context: common.Context, item: listItem) {
const tokens = PreferencesUtil.getPreferenceValue('MyPreferences', 'token', '')
let token: token
tokens
.then((res) => {
token = JSON.parse(JSON.stringify(res)) as token
console.log("获取", token)
let filesDir = context.filesDir;
this.localFilePath = filesDir + '/' + item.docName + '.doc'
//文件如果已经存在,就删除,下载之前先检查删除
fs.access(this.localFilePath).then((res: boolean) => {
if (res) {
console.info("file exists" + "--localFilePath:" + this.localFilePath);
fs.unlink(this.localFilePath)
} else {
console.info("localFilePath file not exists");
}
}).catch((err: BusinessError) => {
console.error("access failed with error message: " + err.message + ", error code: " + err.code);
});
try {
// 执行下载任务
request.downloadFile(context, {
url: item.docUrl,
// filePath: uris[0].split('file:')[1],
filePath: this.localFilePath,
header: {
'Content-Type': 'application/json;charset=UTF-8',
'Authorization': 'Basic am9ic2xpbmtfY2xpZW50QTpqb2JzbGlua19jbGllbnRBX3NlY3JldA==',
'Jobslink-Auth': 'bearer ' + token
}
}).then((data: request.DownloadTask) => {
let downloadTask: request.DownloadTask = data;
downloadTask.on('complete', () => {
try {
//配置文件保存服务
const documentSaveOptions = new picker.DocumentSaveOptions();
//检查newFileNames是...
console.log('newFileNames:' + JSON.stringify(item.docName))
documentSaveOptions.newFileNames = [JSON.stringify(item.docName)];
documentSaveOptions.fileSuffixChoices = ['.doc', '.pdf', '.xlsx', '.jpg', '所有文件(*.*)|.*'];
let documentPicker = new picker.DocumentViewPicker(context);
//选择器
documentPicker.save(documentSaveOptions).then((documentSaveResult: Array<string>) => {
// 获取到到图片或者视频文件的URI后进行文件读取等操作
let uri = documentSaveResult[0];
console.info('test uri:' + uri)
console.log('DocumentViewPicker.save successfully,', JSON.stringify(documentSaveResult));
// 沙箱路径文件
let sanFile = fs.openSync(this.localFilePath, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
let pubFile = fs.openSync(uri, fs.OpenMode.READ_WRITE | fs.OpenMode.CREATE)
// 将文件从沙箱路拷贝到公共路径
fs.copyFileSync(sanFile.fd, pubFile.fd)
console.log("-------")
promptAction.showToast({
message: '下载完成已保存',
duration: 1500
})
}).catch((err: BusinessError) => {
console.error('DocumentViewPicker.save failed with err: ' + JSON.stringify(err));
});
} catch (error) {
let err: BusinessError = error as BusinessError;
console.error('DocumentViewPicker failed with err: ' + JSON.stringify(err));
}
});
downloadTask.on('progress', (receivedSize: number, totalSize: number) => {
console.info(`DownloadFile totalSize: ${totalSize} ,downloadSize:${receivedSize}`);
});
downloadTask.on('fail', (err: number) => {
console.info(`DownloadFile err: ${err}`);
});
}).catch((err: BusinessError) => {
console.error(`Failed to request the download. Code: ${err.code}, message: ${err.message}`);
})
} catch (err) {
console.error(`Failed to request the download. err: ${JSON.stringify(err)}`);
}
})
}
更多关于HarmonyOS 鸿蒙Next 下载网络文件 request.download下载到本地的文件大小为0b且没有报错误码 日志正常的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
针对HarmonyOS鸿蒙Next下载网络文件时,request.download
方法下载到本地的文件大小为0b且没有报错误码、日志正常的问题,可能的原因及解决方案如下:
-
URL验证:首先确认下载链接(URL)是否正确且文件真实存在。尝试在浏览器中直接访问该URL,看是否能正常下载文件。
-
权限检查:确保应用已获取存储权限。在鸿蒙系统中,即使日志正常,权限问题仍可能导致文件写入失败。
-
文件路径:检查指定的文件保存路径是否正确,以及该路径下的目录是否已创建。路径错误或目录不存在也会导致文件无法正确写入。
-
下载进度监听:通过监听下载进度回调,检查下载过程中是否有数据流动。如果下载进度始终为0,则可能是网络问题或服务器响应问题。
-
网络状态:确认设备网络状态良好,且服务器允许从当前网络环境下载文件。
-
服务器响应:检查服务器对下载请求的响应头,确保返回的是文件内容而非错误信息或重定向。
如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html