StarFire_xm
  • 文章
  • 粉丝
  • 评论

uniapp嵌入web-view的页面访问app本地目录文件

2024-10-25 17:56:160 次浏览0 次评论技能类型: uniapp
app端:
this_.wv.overrideResourceRequest([{
          match: 'http://xxxx.com/aaaaa/aa.js', // 需要有一个虚假的域名过dns,可以随便瞎写
          redirect: res
        }]);
        
        
        
res的值就是tempFilePath的值:
uni.downloadFile({
    url, // 远程文件需要下载到手机的真实文件的URL
    success: (res) => {
      if (res.statusCode === 200) {
        const tempFilePath = res.tempFilePath; // 获取临时文件路径
        // 保存文件到应用的某个目录
        uni.saveFile({
          tempFilePath: tempFilePath,
          success: (saveRes) => {
            const savedFilePath = saveRes.savedFilePath; // 获取保存后的文件路径
            resolve(tempFilePath);
            console.log("mxmconk1111222:",savedFilePath)
          },
          fail: (saveErr) => {
            console.error('文件保存失败:', saveErr);
          }
        });
      } else {
        console.error('下载失败:', res.statusCode);
      }
    },
    fail: (downloadErr) => {
      console.error('下载失败:', downloadErr);
    }
  });
  })
  
  
  h5端就可以使用动态加载插入js文件 css文件了
  
  const scriptSrc = `http://xxxx.com/aaaaa/aa.js`;
          const script = document.createElement('script');
          script.src = scriptSrc;
          script.async=true;
          document.head.appendChild(script);
          
          
 上面的方案对安卓可行,ios存在兼容问题.使用下面的全面支持的方案: h5页面动态加载js使用: file://+文件绝对路径可访问到.
 
 /下载远程文件保存到本地
function downLoadFile(url: any) {
  return new Promise((resolve, reject) => {
    // 下载文件
    uni.downloadFile({
      url, // 远程文件 URL
      success: (res) => {
        if (res.statusCode === 200) {
          const tempFilePath = res.tempFilePath; // 获取临时文件路径
          // 保存文件到应用的某个目录
          uni.saveFile({
            tempFilePath: tempFilePath,
            success: (saveRes) => {
              const savedFilePath = saveRes.savedFilePath; // 获取保存后的文件路径
              const fileSaveUrlAb = plus.io.convertLocalFileSystemURL(savedFilePath);//获取绝对路径
			  resolve(fileSaveUrlAb);
              console.log('mxmcon文件地址:', savedFilePath,tempFilePath,plus.io.convertLocalFileSystemURL(savedFilePath));
            },
            fail: (saveErr) => {
              console.error('文件保存失败:', saveErr);
            },
          });
        } else {
          console.error('下载失败:', res.statusCode);
        }
      },
      fail: (downloadErr) => {
        console.error('下载失败:', downloadErr);
      },
    });
  });
}


    发表

    还没有评论哦,来抢个沙发吧!