Загрузка изображения из angularjs 1.5 в grails 3 как байт [] и сохранение его в postgresql как bytea
Я искал решение в течение нескольких дней. Есть много примеров, когда люди пытаются загрузить картинку. Мне действительно нужна помощь, чтобы пройти через это. У меня есть некоторый код здесь, и я надеюсь, что кто-то может подтолкнуть меня к этому.
Я добавил свой код в эту ссылку
//Angularjs controller :
self.createVaerksted = function(id, navn, by, nummer, billede) {
var data = {};
data.vaerkstedNavn = navn;
data.byNavn = by;
data.vaerkstedNummer = nummer;
data.myImage = billede[0];
vaerkstedService.createVaerksted(data)
.then(function(response) {
console.log(response)
})
// Angularjs service
var prefix = 'http://localhost:8080/api/';
createVaerksted: function(data) {
return $http.post(prefix + 'saveVaerksted', data)
}
заранее спасибо
1 ответ
Чтобы загрузить файл (изображение, xls и т. Д.) С AngularJS, вы можете использовать FormData. Например, используя угловой профиль, вы можете создать угловой контроллер:
function UploadExcelController(domainServiceFactory, contextPath, $log, $state, $stateParams) {
var vm = this;
vm.contextPath = contextPath;
var UploadExcel = domainServiceFactory('/api/uploadExcel/:id', {id: '@id'}, {
create: {
method: "POST",
transformRequest: angular.identity,
headers: { 'Content-Type': undefined }
}
});
vm.uploadExcel = function(data){
var fd = new FormData();
fd.append("year", data["year"]);
fd.append("excelFile", data["excelFile"][0]);
$log.info(fd)
UploadExcel.create({}, fd).$promise.then(function (res) {
$state.go('dashboard');
}).catch(function (err) {
$log.info("error "+err);
alert(""+err);
throw err;
});
}
Создайте команду Grails:
class UploadExcelCommand implements Validateable {
MultipartFile excelFile
Integer year
static constraints = {
year nullable: false
excelFile validator: { val, obj ->
if ( val == null ) {
return false
}
if ( val.empty ) {
return false
}
['xlsx'].any { extension ->
val.originalFilename?.toLowerCase()?.endsWith(extension)
}
}
}
и сделать бизнес логику в контроллере:
class UploadExcelController {
static responseFormats = ['json', 'xml']
def save(UploadExcelCommand cmd) {
if( cmd.hasErrors() ) {
render 404
return
}
if( Excel.get(cmd.year) ){
render 404
return
}
println cmd.year
println cmd.excelFile.inputStream
render "OK"
}
}