2014-10-13 12 views
10

Używam nervgh za kątowa-file-upload na https://github.com/nervgh/angular-file-uploadJak wysłać formData z nervgh za Kątowymi-file-upload

To działa jak czar, kiedy kod ciężko się preOpKey. Chciałbym wysłać plik preOpKey wraz z plikiem, aby zapisać plik w odpowiednim rekordzie w bazie danych.

kątowe-file-upload ma fileData w API, które mam wypełniania w $scope.OnPreinspectionSubmit() ale z jakiegoś powodu nie mogę znaleźć tej wartości raz SaveFile() w moim kontroler MVC jest tzw.

Po prostu muszę wiedzieć, jak przekazać wartość wraz z moim plikiem, a następnie uzyskać do niego dostęp w moim kontrolerze MVC. Sądzę, że wygodnie byłoby wysłać go w fileData, ale nie jest to konieczne, aby odpowiedzieć na moje pytanie.

Oto moja kątowa kontroler:

var OperatorPreinspectionControllers = angular.module('OperatorPreinspectionControllers', ['angularFileUpload']); 

OperatorPreinspectionControllers.controller('OperatorPreinspectionCtrl', ['$scope', '$http', 'FileUploader', 
    function ($scope, $http, FileUploader) { 

     $scope.uploader = new FileUploader({ 
      url: pageBaseUrl + 'image/SaveFile' 
     }); 

     $scope.uploader.filters.push({ 
      name: 'imageFilter', 
      fn: function (item /*{File|FileLikeObject}*/, options) { 
       var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|'; 
       return '|jpg|png|jpeg|bmp|gif|pdf|'.indexOf(type) !== -1; 
      } 
     }); 

     // Send the form data to the database 
     $scope.OnPreinspectionSubmit = function() { 
      if (confirm("Are you sure you want to save this information?")) { 
       $http.post(pageBaseUrl + 'api/PreInspectionForm', $scope.formInformation).success(function (returnData) { 
        $scope.uploader.formData.push({ preOpKey: returnData }); 
        $scope.uploader.uploadAll(); // Upload file 
       }); 
      } else { } 
     } 
    } 
]); 

Oto moja MVC Kontroler:

public void SaveFile() 
    { 
     HttpFileCollectionBase files = Request.Files; 
     HttpPostedFileBase uploadedFile = files[0]; 

     var preOpKey = 123; // ??????? 

     // Turn the file into bytes 
     byte[] data; 
     using(Stream inputStream = uploadedFile.InputStream) 
     { 
      MemoryStream memoryStream = inputStream as MemoryStream; 
      if(memoryStream == null) 
      { 
       memoryStream = new MemoryStream(); 
       inputStream.CopyTo(memoryStream); 
      } 
      data = memoryStream.ToArray(); 
     } 

     PreOpManager.SaveImage(preOpKey, data, uploadedFile.FileName, uploadedFile.ContentType); 
    } 

Dziękuję

Aaron

+0

myślę, że można po prostu wysłać klucz poprzez longhand danych postu: $ http ({ url: 'request-url', metoda: "POST", dane: { "message": message} }), następnie odbierz dane z posta json i prześlij je do bazy danych. – jorblume

+0

Musi być jakiś błąd w przesyłaniu plików kątowych. Skończyło się na tym, że wyciągnąłem go i wykorzystałem plik Angular-File-Upload firmy danialfarid, który ma "dane formularza" tylko ten działa. :) –

+0

Wow, niefortunne. Cóż, cieszę się, że masz wszystko w porządku. – jorblume

Odpowiedz

Powiązane problemy