iOS Safari 13.3.1上传的文件大小为0

我在PHP上有一个简单页面的网站,用户可以在其中上传文件(stl模型)。 最初,我用于上传JS FormData。它可以在Chrome和Firefox中使用,但Safari iOS有时会发送大小为0字节的文件。 JS console.log显示,发送前该文件大小为718120字节。 PHP调试模式表明存在全局$ _FILE,文件名为true,但文件为空:

(
    [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的输入格式

但是错误再次发生。我在做什么错了?

yww5491012 回答:iOS Safari 13.3.1上传的文件大小为0

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

  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',and 'arguments' properties may not be accessed on strict mode,然后删除下一行: dataType: 'json'来自我的代码。而且有帮助。
本文链接:https://www.f2er.com/2629614.html

大家都在问