MVC5上传图片以及数据

时间:2018-12-13 10:55:35

标签: javascript ajax razor asp.net-mvc-5

因此,我在使用

时遇到了问题
<input type="file" multiple id="fileUpload" name="photos[]" accept="image/*" />

它没有封装在标签内。

每次选择图像时,它都不会更新,只会刷新。 由于某种原因,我每次选择图像时都会注意到它尝试执行POST方法,并且停留为“未选择文件”。

这是我在服务器端捕获图像的方法,请注意,仅当我选择文件然后刷新页面并单击“保存”按钮时,此方法才有效。

[HttpPost]
public JsonResult SaveTickets(string gridData)
{
   if (Request.Files.Count > 0)
   {
   //logic    
   }
}

我的方法有效,但是我不知道输入type="file"是否需要刷新页面来加载图片?

自提出要求以来的其他代码,这是我的ajax方法,用于将数据发送到服务器。

    function saveTickets() {
    var gridData = $("#TicketsGrid").data("kendoGrid").dataSource.data();
    var formData = new FormData();
    var files = $("#fileUpload").prop("files");

    formData.append('gridData', JSON.stringify(gridData));

    for (var i = 0; i < files.length; i++) {
        var file = files[i];

        // Check the file type.
        if (!file.type.match('image.*')) {
            continue;
        }

        // Add the file to the request.
        formData.append('photos[]', file, file.name);
    }

    $.ajax({
        url: "@(Url.Action("SaveTickets", "Ticket"))",
        type: "POST",
        data: formData,
        dataType: "formData",
        processData: false,
        contentType: false,
        success: function (json) {
            if (json.Flag == "emptylist") { alert("No tickets to add."); }
            else if (json.Flag == "insertion_success") { alert(json.TicketCount + " tickets inserted successfuly!"); cleanTicketsGrid(); lockEventsGrid(false); }
            else if (json.Flag == "insertion_failure") { alert(json.TicketCount + " tickets failed to insert!");}
        }
    });
}

0 个答案:

没有答案