You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将下载的文件保存至LG WebOS TV应用本地存储

LG WebOS TV应用:将下载文件保存到本地存储

在LG WebOS TV应用中,浏览器常规存储方案(如localStorage)无法处理大体积的图片、视频文件,必须使用系统提供的**文件管理服务com.webos.service.filemanager2**实现本地文件存储。以下是结合你现有下载代码的完整实现方案:

第一步:配置应用权限

先在appinfo.json中添加文件管理服务权限,确保应用能调用系统存储接口:

{
  "requiredPermissions": [
    "com.webos.service.filemanager2"
  ]
}

第二步:实现文件保存逻辑

基于你已有的downloadFile函数,添加保存文件到本地存储的逻辑。核心是将下载得到的Blob转换为ArrayBuffer,再通过WebOS系统服务写入指定目录:

// 原下载函数
async function downloadFile(url) {
    try {
        const response = await fetch(url);
        if (!response.ok) throw new Error(`HTTP error! status: ${response.status}`);
        const blob = await response.blob();
        return blob;
    } catch (error) {
        console.error('Error fetching file:', error);
        throw error; // 抛出错误让上层处理
    }
}

// 保存文件到WebOS本地存储的函数
async function saveFileToLocal(blob, filename) {
    try {
        // 将Blob转换为ArrayBuffer(WebOS文件服务要求的格式)
        const arrayBuffer = await blob.arrayBuffer();
        const uint8Array = new Uint8Array(arrayBuffer);

        // 调用WebOS文件管理服务写入文件
        return new Promise((resolve, reject) => {
            webOS.service.request('com.webos.service.filemanager2', {
                method: 'write',
                parameters: {
                    // 应用私有存储目录,替换为你的应用ID(从appinfo.json获取)
                    path: `/media/internal/apps/com.your.app.id/${filename}`,
                    data: uint8Array,
                    append: false // 覆盖已有文件,需追加则设为true
                },
                onSuccess: (result) => {
                    console.log('File saved successfully:', result);
                    resolve(result);
                },
                onFailure: (error) => {
                    console.error('Error saving file:', error);
                    reject(error);
                }
            });
        });
    } catch (error) {
        console.error('Error processing file:', error);
        throw error;
    }
}

// 组合下载+保存的调用示例
async function downloadAndSave(url, filename) {
    try {
        const blob = await downloadFile(url);
        await saveFileToLocal(blob, filename);
        console.log('File downloaded and saved successfully');
    } catch (error) {
        console.error('Download and save failed:', error);
    }
}

// 使用示例:下载并保存一张图片
downloadAndSave('https://your-backend-url/image.jpg', 'local-image.jpg');

关键说明

  • 存储路径:/media/internal/apps/com.your.app.id/是应用私有存储目录,其他应用无法访问,安全性更高。可从appinfo.json的id字段获取自己的应用ID。
  • 格式兼容:无论图片、视频还是其他文件,只要能转换为Blob,都可用该逻辑保存。
  • 错误处理:代码保留完整的错误抛出与捕获逻辑,方便排查权限不足、网络失败、写入异常等问题。

内容的提问来源于stack exchange,提问作者karthik vs

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:46:05