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

Median应用中私有运行时生成URL无法下载文件的方案咨询

问题分析与解决方案

可能原因

生产环境下,Median的JS Bridge无法识别或访问blob:协议的URL——这类URL是浏览器内存内的私有资源,原生App的JS Bridge通常没有权限读取这类非HTTP/HTTPS协议的资源。而开发环境基于本地浏览器,权限限制更宽松,因此能正常工作。

解决方案

方案1:将Blob转为Base64字符串传递

绕过blob: URL,直接把文件转成Base64格式传给JS Bridge:

// Blob转Base64工具函数
function blobToBase64(blob) {
  return new Promise((resolve, reject) => {
    const reader = new FileReader();
    reader.onloadend = () => resolve(reader.result);
    reader.onerror = reject;
    reader.readAsDataURL(blob);
  });
}

// 调用示例
blobToBase64(yourBlobFile).then(base64Url => {
  Median.share.downloadFile({
    url: base64Url,
    filename: 'target-filename.ext',
    open: true
  });
});

方案2:后端生成可直接访问的文件URL

如果后端支持,把Blob上传到服务器,获取一个公开的HTTP/HTTPS URL再传递:

// 假设后端有Blob上传接口,返回文件访问地址
axios.post('/api/upload-file', yourBlobFile, {
  headers: { 'Content-Type': 'multipart/form-data' }
}).then(res => {
  const publicFileUrl = res.data.fileUrl;
  Median.share.downloadFile({
    url: publicFileUrl,
    filename: 'target-filename.ext',
    open: true
  });
});

方案3:直接传递Blob对象(尝试验证)

部分App的JS Bridge支持直接接收Blob对象,跳过createObjectURL步骤试试:

Median.share.downloadFile({
  blob: yourBlobFile,
  filename: 'target-filename.ext',
  open: true
});

注:官方文档未明确说明的话,需要自行测试Median平台是否支持blob这个参数。

调试建议

  • 开启Median平台的远程调试工具,查看生产环境下调用downloadFile时的控制台错误,确认是否存在权限或URL解析问题。
  • 检查生产环境App的权限配置,确保应用拥有文件读写、网络访问的必要权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 20:12:03