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

Cordova iOS应用照片上传失败 Xcode提示图片文件不存在错误

Cordova iOS 图片加载与上传失败解决方案

从报错日志可以定位到核心问题:Cordova iOS 6.0+ 版本默认使用WKWebView,相机返回的FILE_URI是带http://localhost:端口/local-filesystem前缀的虚拟路径,FileTransfer插件无法识别该路径读取真实本地文件,导致文件找不到和上传失败。

修复步骤

  • 路径预处理:拿到相机返回的imageData后,先过滤掉虚拟路径前缀,提取真实沙盒文件路径
    示例处理逻辑:
    // 新增路径处理代码
    if (imageData.indexOf('local-filesystem/') > -1) {
      imageData = imageData.split('local-filesystem')[1];
    }
    
  • 调整上传配置:关闭分块上传模式,多数PHP服务端默认不支持分块上传,容易触发接收失败
    修改FileUploadOptions配置:
    options.chunkedMode = false;
    
  • 可选兼容优化:如果适配iOS 14及以上系统,可以将相机参数中的destinationType改为Camera.DestinationType.NATIVE_URI,直接返回原生文件路径,避免虚拟路径转换问题。

修改后的完整代码示例

$(document).on('tap', '#scatta_foto1', function(event) {
  event.preventDefault();
  
  if (app.isJQMGhostClick(event)) {
    return;
  }
  
  navigator.camera.getPicture(function(imageData) {
    // 新增路径处理
    if (imageData.indexOf('local-filesystem/') > -1) {
      imageData = imageData.split('local-filesystem')[1];
    }

    var options = new FileUploadOptions();
    options.fileKey = "file";
    options.fileName = imageData.substr(imageData.lastIndexOf('/') + 1);
    options.mimeType = "image/jpg";
    // 关闭分块上传
    options.chunkedMode = false;
    
    app.setV('immagine1', options.fileName);
    app.setV('img1_salv', options.fileName);
    
    var ft = new FileTransfer();
    
    ft.upload(imageData, encodeURI(app.getV('root') + 'upload_foto.php'), function win(r) {
      $('#immagine1').attr('src', encodeURI(app.getV('root_img') + options.fileName));
      $('.foto1').show();
    }, function fail(error) {
      alert('Image: ' + imageData + 'Failed because: ' + error.code + ' source: ' + error.source+ ' target: ' + error.target + ' status: ' + error.status + ' body: ' + error.body + ' exception: ' + error.exception);
    }, options, true);
  }, function(message) {

  }, {
    quality : 50,
    encodingType : Camera.EncodingType.JPG,
    destinationType : Camera.DestinationType.FILE_URI,
    sourceType : navigator.camera.PictureSourceType.PHOTOLIBRARY
  });
  
  event.stopImmediatePropagation();
});

内容的提问来源于stack exchange,提问作者Vito Di Gravina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:54:04