Problem z wysłaniem pliku i odbiorem w kontrolerze

0

Witam, wysyłam plik przez angular-a post:

var file = document.getElementById('Image2').files[0];
            $http({
                url: 'AdminPanel/EditHomePageFirstSection',
                method: "POST",
                data: {
                    'section': section, 'model': { Id: section, Title: $scope.firstSectionResponse.Title, SubTitle: $scope.firstSectionResponse.SubTitle, Description: $scope.firstSectionResponse.Description, file: file }
                }
            })
                .then(function (response) {
                    // success
                    $scope.ErrorMessageShow = false;
                    $scope.SuccessMessageShow = true;
                    $scope.SuccessMessage = "Zaktualizowano sekcję 2 - zdjęcie 2";
                },
                function (response) { // optional
                    // failed
                    $scope.ErrorMessageShow = true;
                    $scope.ErrorMessage = "Coś poszło nie tak...";
                });

Jednak w kontrolerze file jest null:

[HttpPost]
        public JsonResult EditHomePageFirstSection(int section, HomeFirstSection model, HttpPostedFileBase file)
        {
            //var data = _adminPanelService.EditHomePageFirstSectionData(section, model, file);
            
            if(true)
                return Json(new { result = true }, JsonRequestBehavior.AllowGet);
            else
                return Json(new { result = false }, JsonRequestBehavior.AllowGet);
        }

var file = document.getElementById('Image2').files[0]; // Ma obiekt (plik) w sobie ale go nie wysyła do kontrolera
Html:

<div class="upload-section col-lg-4">
     <div>
           <label class="upload-image" for="uploadOne">
                 <input type="file" id="Image2" name="Image2">
           </label>
     </div>
</div>                                		
0

Wydaj mi się że za późno zamykasz } . Powinno być przed file: Bo inaczej file wchodzi Ci do model zamiast jako osobny obiekt

data: {
 'section': section,
 'model': { 
Id: section, 
Title: $scope.firstSectionResponse.Title,
 SubTitle: $scope.firstSectionResponse.SubTitle,
 Description: $scope.firstSectionResponse.Description
},
 file: file 
                }
0

Oczywiście. Ale i tak to nie pomogło nadal jest null w kontrolerze.

0

Taki sposób działa:

// Get file by Id
            var file = document.getElementById('Image2').files[0];

            // Create form data
            var fd = new FormData();

            // Append file
            fd.append('file', file);
            fd.append('section', section);

            // Append details data
            fd.append('Id', section);
            fd.append('Title', $scope.firstSectionResponse.Title);
            fd.append('SubTitle', $scope.firstSectionResponse.SubTitle);
            fd.append('Description', $scope.firstSectionResponse.Description);

            // Post data to the server
            $http.post('AdminPanel/EditHomePageFirstSection', fd, {
                transformRequest: angular.identity,
                headers: { 'Content-Type': undefined }
            })
                .then(function (response) {
                    // success
                    $scope.ErrorMessageShow = false;
                    $scope.SuccessMessageShow = true;
                    $scope.SuccessMessage = "Zaktualizowano sekcję 2 - zdjęcie 2";
                },
                function (response) { // optional
                    // failed
                    $scope.ErrorMessageShow = true;
                    $scope.ErrorMessage = "Coś poszło nie tak...";
                });

Choć jeśli ktoś znajdzie czemu tam przy inicjalizacji data: nie działa będę bardzo wdzięczny. Pozdrawiam :)

0

Być może należy dodać apostrofy jak przy model ale też pewnie to nic nie da. Ja wysyłam pliki ajax em korzystając z formData

1 użytkowników online, w tym zalogowanych: 0, gości: 1