angularjs - 从angularjs 1.5上传图像到grails 3作为byte []并将其保存在postgresql中作为bytea

标签 angularjs postgresql grails grails-domain-class grails-controller

我已经在几天内寻找解决方案。人们尝试上传图片的例子很多。
我真的需要一些帮助来解决这个问题。我在这里有一些代码,希望有人可以帮助我解决这个问题。

我已经在link中添加了我的代码

//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)
    }

先感谢您

最佳答案

要使用AngularJS上传文件(图像,xls等),您可以使用FormData。
例如,使用Angular轮廓可以创建一个 Angular Controller :

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)
        }
    }
}

并在 Controller 中执行业务逻辑:
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"
}

}

关于angularjs - 从angularjs 1.5上传图像到grails 3作为byte []并将其保存在postgresql中作为bytea,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44243557/

相关文章:

grails - 命令行中的Grails在线程中获取数字格式异常,无法恢复

date - Grails日期类型

grails - 一对多关系的Gorm映射/自引用

javascript - 在 $http post 请求 header 或正文中插入自定义变量

javascript - ngInfiniteScroll 中的滚动非常不稳定

javascript - 如何使用angular js上下移动项目?

postgresql - 在 PL/pgSQL 中插入多行时如何获取最后插入的 ID

javascript - 在 angularJS 应用程序中将模型保存在哪里?

postgresql - 无法使用命令 'postgres' 或 'pg_ctl'

node.js - nodejs、pgSQL 和异步查询