Загрузка изображения из 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"
}

}

Другие вопросы по тегам