uni-app 开启app后自动删除临时路径下文件 导致插件拍摄功能新生成mp4文件被删除 如何处理
uni-app 开启app后自动删除临时路径下文件 导致插件拍摄功能新生成mp4文件被删除 如何处理
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | 12 | HBuilderX |
Android | 14 | |
小米 | ||
redmi k60 |
示例代码:
开启app后会自动删除临时路径下的文件,这时如果开启插件的拍摄功能,拍摄输出路径也是doc/uni_temp_时间戳路径,系统会将新生成的mp4文件一起删除,如何处理?
操作步骤:
开启app后会自动删除临时路径下的文件,这时如果开启插件的拍摄功能,拍摄输出路径也是doc/uni_temp_时间戳路径,系统会将新生成的mp4文件一起删除,如何处理?
预期结果:
不会删除新这次开启app后新生成的文件路径
实际结果:
会将打开app后新生成的文件一起删掉
更多关于uni-app 开启app后自动删除临时路径下文件 导致插件拍摄功能新生成mp4文件被删除 如何处理的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于uni-app 开启app后自动删除临时路径下文件 导致插件拍摄功能新生成mp4文件被删除 如何处理的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 uni-app
中,如果你发现应用启动时会自动删除临时路径下的文件,导致插件拍摄功能新生成的 MP4 文件被删除,可以通过以下几种方式来解决这个问题:
1. 修改文件的存储路径
将生成的 MP4 文件保存到一个不会被自动清理的目录中,而不是默认的临时目录。你可以使用 uni-app
提供的文件系统 API 来指定文件的存储路径。
const filePath = plus.io.convertLocalFileSystemURL('_doc/') + 'myVideo.mp4';
// 将拍摄的视频保存到 _doc 目录下
uni.chooseVideo({
sourceType: ['camera'],
success: (res) => {
// 将视频文件移动到指定路径
plus.io.resolveLocalFileSystemURL(res.tempFilePath, (entry) => {
entry.moveTo(plus.io.convertLocalFileSystemURL('_doc/'), 'myVideo.mp4', (newEntry) => {
console.log('文件已保存到:', newEntry.fullPath);
}, (error) => {
console.error('文件移动失败:', error);
});
});
}
});
2. 在应用启动时检查并保留需要的文件
你可以在应用启动时检查临时目录,并保留你需要的文件。可以通过 plus.io
API 来遍历临时目录下的文件,并根据需要保留或移动文件。
plus.io.resolveLocalFileSystemURL('_temp/', (entry) => {
const directoryReader = entry.createReader();
directoryReader.readEntries((entries) => {
entries.forEach((fileEntry) => {
if (fileEntry.isFile && fileEntry.name.endsWith('.mp4')) {
// 将文件移动到 _doc 目录下
fileEntry.moveTo(plus.io.convertLocalFileSystemURL('_doc/'), fileEntry.name, (newEntry) => {
console.log('文件已保留:', newEntry.fullPath);
}, (error) => {
console.error('文件保留失败:', error);
});
}
});
}, (error) => {
console.error('读取临时目录失败:', error);
});
});
3. 使用插件配置
如果你使用的是某个插件来拍摄视频,查看插件的文档,看看是否有配置项可以指定生成文件的存储路径。有些插件允许你自定义文件的保存路径,避免文件被自动删除。
4. 避免使用临时目录
尽量避免使用临时目录来存储重要的文件。可以在应用启动时创建一个专用的目录来存储这些文件,并确保它们不会被自动清理。
// 创建专用目录
plus.io.resolveLocalFileSystemURL('_doc/videos/', (entry) => {
console.log('专用目录已存在:', entry.fullPath);
}, (error) => {
// 如果目录不存在,则创建
plus.io.resolveLocalFileSystemURL('_doc/', (parentEntry) => {
parentEntry.getDirectory('videos', { create: true }, (newEntry) => {
console.log('专用目录已创建:', newEntry.fullPath);
}, (error) => {
console.error('创建专用目录失败:', error);
});
});
});