大佬教程收集整理的这篇文章主要介绍了jQuery文件上传:无法在Safari 11中上传文件,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
>在标题中创建一个带有西里尔字母的文件夹,例如“русский_язык”
>将一些文件@L_197_6@到该文件夹
>在Safari 11.1浏览器中打开https://blueimp.github.io/jQuery-File-Upload/
>从该文件夹上传文件
为了更好地理解,请观看Safari 11:https://drive.google.com/open?id=16tU8iBn0U9bUs7u5pM4ZBXmxpfJIv8WV的视频
为了更好地理解,请观看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')
至
entries = []
一切都应该有效.
我想这是因为苹果@L_197_6@到safari实验功能 – FileSystemEntry.有关此功能的更多信息https://developer.mozilla.org/en-US/docs/Web/API/FileSystemEntry.
如果entries变量将为空,则jquery.fileupload.js将使用
用于获取上传文件的久经考验的文件属性.请查看代码https://github.com/blueimp/jQuery-File-Upload/blob/master/js/jquery.fileupload.js#L1189以获取更多详细信息
_handleFileTreeEntry: function (entry,path) { var that = this,dfd = $.Deferred(),errorHandler = function (E) { if (e && !e.entry) { e.entry = entry; } // Since $.when returns immediately if one // Deferred is rejected,we use resolve instead. // This allows valid files and invalid items // to be returned together in one set: dfd.resolve([e]); },successHandler = function (entries) { that._handleFileTreeEntries( entries,path + entry.name + '/' ).done(function (files) { dfd.resolve(files); }).fail(errorHandler); },readEntries = function () { dirReader.readEntries(function (results) { if (!results.length) { successHandler(entries); } else { entries = entries.concat(results); readEntries(); } },errorHandler); },dirReader,entries = []; path = path || ''; if (entry.isFilE) { if (entry._filE) { // Workaround for Chrome bug #149735 entry._file.relativePath = path; dfd.resolve(entry._filE); } else { entry.file(function (filE) { // <=== here file.relativePath = path; dfd.resolve(filE); },errorHandler); } } else if (entry.isDirectory) { dirReader = entry.createReader(); readEntries(); } else { // Return an empy list for file system items // other than files or directories: dfd.resolve([]); } return dfd.promise();
}
entry.file(function (filE) { file.relativePath = path; dfd.resolve(filE); },errorHandler);
Safari返回errorHandler进行文件函数回调.函数api参考这里:https://developer.mozilla.org/en-US/docs/Web/API/FileSystemFileEntry/file.
它一定是Safari 11的bug.很快我就会报告Apple的错误.在jQuery.fileupload.js中,我想更好的固定方法是使用Safari 11检测UserAgent.但我认为Apple应该解决这个问题.
以上是大佬教程为你收集整理的jQuery文件上传:无法在Safari 11中上传文件全部内容,希望文章能够帮你解决jQuery文件上传:无法在Safari 11中上传文件所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。