【问题标题】:Uploading document from angularjs to springboot从angularjs上传文档到spring boot
【发布时间】:2019-08-01 20:51:35
【问题描述】:

Angularjs $http.post 给出了 404 异常,但所有其他方法都可以使用相同的代码,我正在尝试通过 spring boot 上传文件

在我去年做的另一个项目中,相同的代码可以正常工作,当我发送没有文件的信息时,相同的 $http.post 也可以工作

service.js

function addCompanyDoc(file, id) {
  var deferred = $q.defer();
  var data = new FormData();
  data.append('file', file);
  var config = {
    transformRequest: angular.identity,
    transformResponse: angular.identity,
    headers: {
      'Content-Type': undefined
    }
  }

  console.log('appService file ');
  console.dir(file); //cheking if file is available


  $http.post('http://localhost:8080/listed/welcome/company/doc/' + id,
      data, config)
    .then(function(response) {
        deferred.resolve(response.data);
      },
      function(errResponse) {
        alert(errResponse.data.errorMessage);
        console.error('Error while uploading company doc', errResponse);
        this.flag = 'failed';
        deferred.reject(errResponse);
      });

  return deferred.promise;
}

弹簧靴

@RequestMapping("/welcome")
public class controllers{

@RequestMapping(value = "/company/doc/{id}", method = 
RequestMethod.POST, consumes = {"multipart/form-data" })
@ResponseBody 
public ResponseEntity<Void> saveCompanyDoc(@RequestParam("file") 
MultipartFile file, @PathVariable final int id){
//....uploading to DB
} 
}

angularjs 向 spring boot 发送一个文档,spring 上传到 DB / 发送到一个文件夹。 使用 angularjs 1.7 和 spring boot 2.*

工作正常:-)

【问题讨论】:

  • 您永远不会将任何内容附加到 FormData 对象。请注意,您不需要$q.defer(),因为$http 方法已经返回$q 承诺
  • 避免使用deferred anti-pattern。
  • 谢谢@charlietfl 我猜当我将代码复制到stackoverflow时附加被删除了,但它在那里并且还删除了$q并且发生了相同的结果:-(
  • 现在公司 controller.js 处理函数 success & error() bur 仍然没有运气 :: var req = { method: 'POST', url: REST_SERVICE_URI+'company/doc/'+id, config , 数据: formData } return $http(req);在后端我删除了ResponseBody并制作了整个类RestController,我尝试在RequestParam的空间中使用RequestPart :: 仍然没有运气

标签: angularjs spring spring-boot


【解决方案1】:

感谢所有cmets以上代码是正确的,

我创建了一个虚拟表和控制器来测试应用程序。

它给出了相同的 404 错误,我记得几周前我添加了一个“管理文件夹”来处理 CMS,并将所有角色定向到“文件夹”,它阻止了所有用户进行数据发布。所以我只需要修复我的 WebSecurityConfig 类:-)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 2017-12-30
    • 2022-01-15
    • 2019-02-20
    • 2019-09-23
    • 1970-01-01
    • 2014-11-08
    相关资源
    最近更新 更多