如何通过AJAX发送属性添加到文件?

时间:2015-10-18 17:10:00

标签: javascript jquery asp.net-mvc

我有一个MVC应用程序,我在应用程序中上传图片文件。

此代码:

            var files = $(".uploadFile").data("files");

            $.each(files, function (key, value) {
                data.append('file', value);
            })

            $('.userForm *').filter(':input').each(function (index, value) {
                data.append(value.id, $("#" + value.id).val());
            });

            $.ajax({
                url: "/Customer/AddCustomer",
                type: 'POST',
                data: data,
                cache: false,
                processData: false,
                contentType: false,
                success: function (data) {
                // logic  
                 $.LoadingOverlay("hide");
                },
                error: function (event, jqxhr, settings, thrownError) {
                   // logic
                    $.LoadingOverlay("hide");
                }
            });

服务器代码:

   public string AddCustomer(HttpPostedFileBase file, Customer customer)
    {

        // add customer and return to edit view
        return partialView("customerEdit");
    } 

我想知道如何为我发送的每个文件添加属性? 例如,对于我添加的每个文件,我创建一个我附加到DOM的列表。 在此列表中,每个文件旁边都有一个复选框,指示此文件(图片)是否应该是个人资料图片。

如何将boelan属性附加到每个文件?

1 个答案:

答案 0 :(得分:0)

感谢@adeneo,我的大脑开始了。

我不得不重新考虑我的策略,因为我不想将额外的参数作为一个连续的字符串发送。

我做了以下事情:

在我的第一篇文章中,我发送了文件和客户数据。我将客户保存在数据库中,并将文件存储在tempdata中,以便能够在我的第二篇文章中访问它,我将使用desiered额外参数将文件保存到数据库。

脚本:

spi_register_master

服务器代码,注意不包括整个解决方案:

                $.ajax({
                    url: "/Customer/AddCustomer",
                    type: 'POST',
                    data: data,
                    cache: false,
                    processData: false,
                    contentType: false,
                    success: function (data) {

                        // "Pictures" is an array that contains objects with all the file names and other properties.
                        $.ajax({
                            url: "/Customer/AddCustomerPictures",
                            type: 'POST',
                            data: JSON.stringify({ pictureFiles: Pictures}),
                            contentType: 'application/json; charset=utf-8',
                            success: function(data) {

                                //logic
                            }
                        });

                        //logic
                    },
                    error: function (event, jqxhr, settings, thrownError) {
                   //logic

                    }
                });