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

vodaPay小程序沙箱环境无法预览PDF文件问题咨询

vodaPay小程序沙箱环境PDF预览问题

问题现象

  • 模拟器环境:预览时弹出提示「PDF模拟预览成功,请前往真机调试」,可正常下载PDF文件
  • 沙箱真机环境:操作失败,提示「文件类型不是PDF」

相关代码

my.downloadFile({
    url: fileUrl,
    success: (res) => { 
      my.hideLoading();
      console.log(res);
      if(!res.apFilePath){
        my.alert({ title: '下载失败', content: "未找到文件" });
      }
      const filePath  = res.apFilePath;
    
     
      my.openDocument({
        filePath: filePath, 
        success: () => {
          console.log('PDF打开成功');
        },
        fail: (res) => {
          my.alert({ title: '打开文件错误', content: JSON.stringify(res) });
        }
      });
    },
    fail: (res) => {
      my.hideLoading();
      my.alert({ title: '下载失败', content: JSON.stringify(res) });
    }
  });

沙箱设备报错信息

下载失败.       
ariver_ext: "za.co.vodacom.vodapay.appcontainer.plugin.mva.NewDownloadFileExtension"
error: -1
errorMessage: "文件类型不是PDF"
message: "文件类型不是PDF"

排查及解决建议

  • 检查文件接口的Content-Type响应头
    vodaPay沙箱的my.downloadFile会严格校验文件的Content-Type,而模拟器无此限制。确保文件接口返回的Content-Type为application/pdf,如果是application/octet-stream这类通用二进制类型,沙箱会判定文件不是PDF。

  • 手动添加PDF文件后缀
    部分场景下下载的文件路径可能没有正确的.pdf后缀,导致my.openDocument无法识别。修改代码中文件路径的处理逻辑:

// 给下载后的文件路径添加.pdf后缀
const filePath = res.apFilePath + '.pdf';

注意:此方法仅适用于确认原文件确实是PDF的情况。

  • 校验下载文件的实际MIME类型
    下载成功后通过my.getFileInfo获取文件真实的MIME类型,确认后再调用打开方法:
my.downloadFile({
  url: fileUrl,
  success: (res) => { 
    my.hideLoading();
    if(!res.apFilePath){
      my.alert({ title: '下载失败', content: "未找到文件" });
      return;
    }
    // 获取文件信息校验MIME类型
    my.getFileInfo({
      filePath: res.apFilePath,
      success: (infoRes) => {
        if (infoRes.mimeType === 'application/pdf') {
          my.openDocument({
            filePath: res.apFilePath, 
            success: () => console.log('PDF打开成功'),
            fail: (err) => my.alert({ title: '打开文件错误', content: JSON.stringify(err) })
          });
        } else {
          my.alert({ title: '错误', content: '下载的文件不是PDF格式' });
        }
      },
      fail: () => my.alert({ title: '错误', content: '无法获取文件信息' })
    });
  },
  fail: (res) => {
    my.hideLoading();
    my.alert({ title: '下载失败', content: JSON.stringify(res) });
  }
});
  • 测试标准PDF文件
    使用一个小体积的标准PDF文件进行测试,排除文件本身编码、格式异常导致的沙箱识别失败问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 22:12:39