我有一个允许用户上传文件的表格。这适用于桌面浏览器Internet Explorer 11,Edge 44.17763.1.0,Chrome 75.0.3770.142,Firefox 67和移动浏览器(适用于Android的Chrome),适用于Android的Firefox(不确定移动版本)。
当iOS上的用户尝试使用此表单从照片库上传图片时,它在尝试发出AJAX请求时总是会失败,但是我无法在iOS上调试它,尽管收到了请求被服务器丢掉,然后才进入控制器。
但是,如果用户单击上传按钮并选择“拍摄照片或视频”或“浏览”选项,则上传成功。 它似乎特定于照片库,我大约有10个人在他们的设备上复制了此照片。
我整个上午都在搜索,但似乎找不到答案。
html表格
<form id="form4" name="form3" action="/uploader" enctype="multipart/form-data" method="post" class="form-group" style="display:flex">
<div class="buttons">
<div class="upload-button">
<div class="label">Click here to upload files</div>
<input id="files" multiple name="@this.ViewBag.ref" type="file" accept="audio/*,video/*,image/*"
size="1" onchange="uploadFiles('form4');" title="Upload Files" class="upload-button"/>
<input id="TextRef" type="text" value="@this.ViewBag.ref" />
</div>
</div>
</form>
JS
function uploadFiles(inputId) {
var input = document.getElementById("TextRef");
var fileForm = document.getElementById("files");
var files = fileForm.files;
var $form = $(document.getElementById(inputId));
var formData = new FormData($form[0]);
var refNum = input.value;
formData.append("Reference", refNum);
for (var i = 0; i != files.length; i++) {
formData.append("files", files[i]);
}
$('#loading').show();
$.ajax(
{
url: "/uploader",
data: formData,
processData: false,
contentType: false,
type: "POST",
success: function (html) {
$(".content").html(html);
$('#loading').hide();
$("#success").show();
$("#success").fadeTo(2000, 500).slideUp(500, function () {
$("#success").hide();
});
},
error: function (html) {
$(".content").html(html);
$('#loading').hide();
$("#failure").show();
$("#failure").fadeTo(2000, 500).slideUp(500, function () {
$("#failure").hide();
});
}
}
);}