【问题标题】:iOS Safari 13.3.1 uploaded file size is 0iOS Safari 13.3.1 上传的文件大小为 0
【发布时间】:2020-03-17 20:11:52
【问题描述】:

我有一个关于 PHP 的简单页面站点,用户可以在其中上传文件(stl-model)。 起初我用于上传 JS FormData。它适用于 Chrome 和 Firefox,但 Safari iOS 有时会发送大小 = 0 字节的文件。 JS console.log 显示,发送前文件大小为 718120 字节。 PHP调试模式显示全局$ _FILE存在且文件名为真,但文件为空:

(
    [name] => TRRSExtenderMount.stl
    [type] => application / octet-stream
    [tmp_name] => / tmp / phphDceFc
    [error] => 0
    [size] => 0
)

大小为 0 的错误不时重复。

我尝试了什么:

  • 已检查 phpinfo post_max_size、upload_max_filesize
  • 在不同的设备上进行了测试(均使用 13.3.1 iOS)
  • 使用不同的 stl 文件和文件大小(从 0.5mb 到 16mb)进行测试
  • 通过 3g、4g 和 wi-fi 测试
  • 检查上传速度慢:检查文件大小,等待10秒再检查一次
  • 使用没有 JS 的 POST 方法更改了标准 HTML 的输入表单

但错误再次出现。我做错了什么?

【问题讨论】:

    标签: file-upload safari upload jquery-file-upload form-data


    【解决方案1】:

    所以,我解决了这个问题。可能是我的经验可以帮助某人:

    1. 如果您不重新加载页面,我重现了当您在第一次调用 2 分钟后重复 Ajax 调用时返回的错误。
    2. 我注意到文件对象属性“lastModified”总是等于文件创建日期。所以浏览器可能会使用缓存中的Formdata。我添加了下一个代码以始终发送“新”文件:
        this.trueFile = new File([this.originalFile], 'file-name.stl', {lastModified: new Date()});
    
    1. 之后错误发生了变化:第二次 Ajax 调用(2 分钟后)在超时时崩溃并返回下一条消息:
        TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode
    
    1. 下一步我发现了这个问题:Getting TypeError: 'caller', 'callee', and 'arguments' properties may not be accessed on strict mode,并删除下一行: dataType: 'json' 来自我的代码。这很有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-03
      • 2013-06-07
      • 2018-07-05
      • 1970-01-01
      • 2021-07-31
      • 1970-01-01
      • 1970-01-01
      • 2021-05-28
      相关资源
      最近更新 更多