在iOS上发布文件的POST请求失败

时间:2019-08-07 11:07:29

标签: javascript c# html ajax file-upload

我有一个允许用户上传文件的表格。这适用于桌面浏览器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();
            });
        }
    }
);}

0 个答案:

没有答案