AngularJS AJAX Post с данными формы и параметрами - PullRequest
0 голосов
/ 28 января 2019

Я новичок в AJAX, поэтому я не знаю, хорошая ли это практика или нет.

Используя AngularJS, я хочу сделать сообщение с данными двоичного файла в форме данных и дополнительным объектом в качестве параметра.Это мой JS:

var files = document.getElementById('txtUploadFile').files;
        if (files.length > 0) {
            if (window.FormData !== undefined) {
                var data = new FormData();
                for (var x = 0; x < files.length; x++) {
                    data.append("file" + x, files[x]);
                }

                $http({
                    method: 'POST',
                    url: ghostApp.VirtualFolder + "/AggregatorArea/AggregatorArea/UploadBOL",
                    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
                    transformRequest: function(obj) {
                        var str = [];
                        for(var p in obj)
                            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                        return str.join("&");
                    },
                    data: data,
                    params: { purchaseOrderHeader: $scope.purchaseOrderHeader }
                }).success(function (result) {
                    $("#ajax_loader").hide();
                    $scope.pagemodel.uploadMessage = result;
                    if (result == "BOL Uploaded Successfully.") {
                        setTimeout(function () { window.location.reload(); }, 5000);
                    } else {
                        $scope.pagemodel.enableFileText = true;
                    }
                    console.log(result);
                }).error(function (error) {
                    $("#ajax_loader").hide();
                    console.log(error);
                    $scope.pagemodel.uploadMessage = "ERROR";
                });
                ...

, а вот мой контроллер:

public ActionResult UploadBOL(PurchaseOrderHeader purchaseOrderHeader)
        {
            string gtfile = "Upload BOL Error";
            byte[] data = null;
            try
            {
                foreach (string file in this.Request.Files)
                {
                    var hpf = this.Request.Files[file];
                    if (hpf != null)
                    {
                        var getpath = hpf.FileName;
                        MemoryStream target = new MemoryStream();
                        hpf.InputStream.CopyTo(target);
                        var extension = Path.GetExtension(getpath);
                        if (extension == ".pdf")
                        {
                            data = target.ToArray();

                            string output = _objBusiness.SaveUploadedFile(data, SessionWrapper.UserId, CommonConstants.unsigned, purchaseOrderHeader);
...

Я пробовал различные комбинации и перестановки параметров, но я не могу получить обаДанные файла и данные параметров одновременно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...