angularjs - 如何从grails(后端)中的angularjs接收上传的文件?

标签 angularjs grails

我正在前端(angularjs)中上传一个excel文件,并希望在后端(grails资源文件)中接收它。我不应该在我的项目中使用GSP。那么如何接收通过angularjs发送的文件呢?

AngularJs代码,

 $scope.uploadExcelFile =function (file) {
        var doc = file
        var filesArr = [];
        if (doc) {
            filesArr.push({file: doc});
            uploadCurry(filesArr);
        }
    }
    function uploadCurry(queue){
        if (arguments.length) {
            this.q = queue
        }
        if (this.q.length) {
            var curr = this.q.pop();
            upload(curr.file);
        }
    }
    function upload(file) {
        if (file) {
            var postdata = {
                file: file,
            }
            roleProfileService.importExcleFile(postdata).then(function(res) {
                console.log(res);
            })
        }
    }

Angular Service文件,
var importExcleFile = function(file,callback){

       return $upload.upload({
           url: '/api/importFile/profile',
           method: 'POST',
           file: file
       }).progress(function(evt) {
           _log('progress: ' + parseInt(100.0 * evt.loaded / evt.total) + '% file :'+ evt.config.file.name);
           roleProfileService.progress = 'Loading '+ evt.config.file.name +" : "+ parseInt(100.0 * evt.loaded / evt.total)+"%"
       }).success(function(data, status, headers, config) {
           _log('file ' + config.file.name + 'is uploaded successfully. Response: ' + data);
           roleProfileService.uploadsuccess = true;
           if(callback) callback();


       }).error(function(a,b,c,d,e){
           _log("err", a,b,c,d,e);
           roleProfileService.uploadfail = true;
       });
   }

Grails资源文件,
@Path('/api/importFile')
@Consumes(['application/json','text/plain','application/vnd.ms-excel'])
@Produces(['application/json'])

class KsaResource {
    KsaService ksaService

    @GET
    @Path('profile')
    Response getAllKsaData(MultipartFile file) {
        //how to receive uploaded file here?
        List<Job> jobSavedList = ksaService.importExcelData(file);
        //rest of code
    }
} 

最佳答案

我们可以编写一个 Controller 来接收文件

class ImportRoleProfileController {

    SpringSecurityService springSecurityService;

    def importUpload() {
        User currentUser = springSecurityService.getCurrentUser();
        def file = request.getFile('file')
        Workbook workbook = Workbook.getWorkbook(file.getInputStream());
        int sheet_Num = workbook.getNumberOfSheets();

关于angularjs - 如何从grails(后端)中的angularjs接收上传的文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40744499/

相关文章:

angularjs - 如何比较字符串的 Angular

grails - 如何从类名中获取类

angularjs - 在 browser.get 之前设置 cookie

javascript - Webpack 和 angularJs

eclipse - 配置Springsource Tool Suit(STS,eclipse)与grails一起使用的最佳方法

postgresql - 将 postgresql 添加到 grails 2.3.4

grails - Grails Spring Security会覆盖当前用户以在多个字段上查找,而不仅仅是用户名

grails - Grails-CreateCriteria检索包含查询中任何元素的任何条目

AngularJS 服务配置值在缩小时被破坏

angularjs - 在 ng-repeat 中传递变量