uni-app中uni.chooseVideo API从相册选取的视频非临时文件,而从摄像头拍摄的视频是临时文件。

uni-app中uni.chooseVideo API从相册选取的视频非临时文件,而从摄像头拍摄的视频是临时文件。

uni.chooseVideo(OBJECT)

拍摄视频或从手机相册中选视频,返回视频的临时文件路径。

若选择和上传非图像、视频文件,另行参考:https://uniapp.dcloud.io/api/media/file。

文件的临时路径,在应用本次启动期间可以正常使用,如需持久保存,需在主动调用 uni.saveFile,在应用下次启动时才能访问得到。

但是实际上,只有拍摄的视频是临时存储的,从手机相册选取的视频,一直存在。我把手机重启,相册上传的视频也存在doc文件夹内。 是不是线上的文档没有更新


更多关于uni-app中uni.chooseVideo API从相册选取的视频非临时文件,而从摄像头拍摄的视频是临时文件。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app中uni.chooseVideo API从相册选取的视频非临时文件,而从摄像头拍摄的视频是临时文件。的实战教程也可以访问 https://www.itying.com/category-93-b0.html


在uni-app中,uni.chooseVideo API 用于选择视频文件,它确实会区分从相册选取的视频和从摄像头拍摄的视频在文件路径上的差异。从相册选取的视频通常是一个持久化的文件路径,而从摄像头拍摄的视频则是一个临时文件路径。

为了处理这两种不同的情况,你可以通过检查返回的视频文件路径来判断它是临时文件还是持久化文件,并据此进行不同的处理。以下是一个基本的代码示例,展示了如何使用 uni.chooseVideo 并区分这两种情况:

uni.chooseVideo({
    sourceType: ['album', 'camera'], // 可以从相册或摄像头选择
    maxDuration: 60, // 最大录制时长
    camera: 'back', // 使用后置摄像头
    success: (res) => {
        const videoPath = res.tempFilePath; // 无论是从相册还是摄像头选择,都会返回这个路径
        const isTempFile = res.tempFilePath.startsWith(uni.env.USER_DATA_PATH); // 简单的判断方法,根据路径前缀

        if (isTempFile) {
            console.log('这是从摄像头拍摄的临时文件路径:', videoPath);
            // 处理临时文件,比如上传或预览
            // 例如,上传临时文件到服务器
            uni.uploadFile({
                url: 'https://your-server.com/upload', // 仅为示例,请替换为你的上传接口
                filePath: videoPath,
                name: 'file',
                success: (uploadFileRes) => {
                    console.log('文件上传成功:', uploadFileRes);
                },
                fail: (err) => {
                    console.error('文件上传失败:', err);
                }
            });
        } else {
            console.log('这是从相册选取的持久化文件路径:', videoPath);
            // 处理持久化文件,比如直接访问或复制
            // 例如,直接访问持久化文件路径进行预览
            uni.previewImage({
                urls: [videoPath], // 注意:uni.previewImage 主要用于图片预览,对于视频预览可能需要其他方式
                current: videoPath,
                success: () => {
                    console.log('视频预览成功');
                },
                fail: (err) => {
                    console.error('视频预览失败:', err);
                    // 注意:对于视频预览,可能需要使用 video 组件或其他方式
                }
            });
            // 注意:由于 previewImage 主要用于图片,对于视频预览可能需要使用 video 组件
        }
    },
    fail: (err) => {
        console.error('选择视频失败:', err);
    }
});

请注意,uni.previewImage 主要用于图片预览,对于视频预览,你可能需要使用 video 组件或其他第三方视频预览库。此外,对于临时文件,你通常需要在应用退出前处理完(如上传到服务器),因为临时文件在应用退出后可能会被系统删除。

回到顶部