【发布时间】:2017-09-06 18:41:38
【问题描述】:
我有一个按钮,当在 Chrome、Firefox 或 Edge 中单击时,会显示文件浏览器窗口,然后我可以在其中选择文件并完成文件上传。但是,当我单击 Safari 中的按钮时,什么也没有发生 - 文件浏览器窗口没有出现。我在 Windows 10 上运行并安装了 Windows 版本的 Safari。
按钮:
<a href="javascript:void(0)" id="uploadFile">Upload File</a>
处理程序:
$(document).ready(function() {
$("#uploadFile").click(function() {
$("#uploadFileHandle").click();
$('html,body').css('cursor','progress');
var formdata = false;
if (window.FormData) {
formdata = new FormData();
}
$("#uploadFileHandle").on("change", function() {
$('html,body').css('cursor','progress');
var i = 0, len = this.files.length, file;
file = this.files[0];
formdata.append("fileUpload", file)
if (formdata) {
csrftoken();
$.ajax({
url: "/profile/uploadFile",
type: "POST",
data: formdata,
processData: false,
contentType: false,
success: function (response) {
if (response.success) {
var res = response.file;
$('html,body').css('cursor','default');
}
}
})
}
});
});
});
有关如何在 Safari 中单击“上传文件”按钮时显示文件浏览器窗口的任何想法?
【问题讨论】:
-
是的,只要使用一个 jquery 插件,你会省很多事
-
这不会在任何浏览器中打开“文件窗口”吗?没有代码可以做到这一点,并且锚被“作废”?
-
我可能记错了,但看起来您正在以编程方式尝试通过人工
click调用来激活文件上传,我认为某些浏览器将其禁用为安全措施并需要直接用户点击。这就是为什么很多人会使用带有for属性的标签字段作为点击触发文件上传对话框的元素。
标签: javascript jquery safari