重现Safari 11中的错误的步骤:
实际结果:文件未上传.
为了更好地理解,请观看Safari 11的视频:https://drive.google.com/open?id = 16tU8iBn0U9bUs7u5pM4ZBXmxpfJIv8WV
尝试上传相同的文件,但使用Safari 10.
实际结果:一切都很好,文件上传没有任何问题.
为了更好地理解,请观看Safari 10的视频:https://drive.google.com/open?id = 1IO--Y1RjETAYAucaNyqhM6HZcQdNKDkI
更新28.05.2018 经过crossbrowsertesting.com几个小时的debagging(因为我没有safari)我找到了临时解决方案:在这一行https://github.com/blueimp/jQuery-File-Upload/blob/master/ js/jquery.fileupload.js#L1182需要替换
entries = fileInput.prop('webkitEntries') || fileInput.prop('entries')
Run Code Online (Sandbox Code Playgroud)
至
entries = []
Run Code Online (Sandbox Code Playgroud)
一切都应该有效.
我想这是因为苹果添加到safari实验功能 - FileSystemEntry.有关此功能的更多信息,请访问https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry.
如果entries变量为空,则jquery.fileupload.js将使用经过良好尝试的files属性来获取上传的文件.查看代码https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js#L1189了解更多详情
我还向Safari和Sebastian Tschan(该库的作者)报告了一个错误