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

1 回复

更多关于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);
    });
  });
});
回到顶部