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
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
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. :) –
Wow, niefortunne. Cóż, cieszę się, że masz wszystko w porządku. – jorblume