通过 REST 服务上传文件时如何解决 400() 错误
Posted
技术标签:
【中文标题】通过 REST 服务上传文件时如何解决 400() 错误【英文标题】:How to resolve 400() error when file uploading via REST service 【发布时间】:2018-03-31 03:32:55 【问题描述】:我有一个程序(Spring Boot),它使用 REST 服务将文件上传到服务器或任何其他给定位置。但是当我使用相同的服务时,发生了以下错误,下面是问题。
通过 REST 服务上传文件时,我收到 400() 错误,没有任何描述。此应用是 Spring Boot 应用,它使用 java-script 前端通过实现的 rest 服务上传和下载文件。
帮助解决这个问题。感谢您的帮助。谢谢。
错误是:
下面是代码: JS:
document.getElementById('import2').onclick = function ()
var files = document.getElementById('selectFiles').files;
console.log(files);
if (files.length <= 0)
return false;
//serverUploaded = true;
var form_data = new FormData(files.item(0));
//from new NLP
$.ajax(
type: "POST",
url: "http://localhost:8080/gsta/upload",
processData: false,
contentType: false,
async: false,
cache: false,
data: form_data,
success: function (result)
//alert(JSON.stringify(result));
//$("#out_lexalytics").html(JSON.stringify(result));
if (result)
if(result.statusCode == 200)
serverUploaded = true;
);
REST 服务:
@PostMapping("/upload")
// If not @RestController, uncomment this
@ResponseBody
public ResponseEntity<?> uploadFile(@RequestParam("data") MultipartFile uploadfile)
logger.debug("Single file upload!");
if (uploadfile != null && uploadfile.isEmpty())
return new ResponseEntity("please select a file!", HttpStatus.OK);
try
saveUploadedFiles(Arrays.asList(uploadfile));
catch (IOException e)
e.printStackTrace();
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
return new ResponseEntity("Successfully uploaded - " + uploadfile.getOriginalFilename(), new HttpHeaders(), HttpStatus.OK);
【问题讨论】:
【参考方案1】:我用这样的邮递员在本地环境中创建了相同的场景;
服务器端稍作改动 (@RequestMapping(value = "/upload", method = RequestMethod.POST));
@RequestMapping(value = "/upload", method = RequestMethod.POST)
public ResponseEntity<?> uploadFile(@RequestParam("data") MultipartFile uploadfile)
logger.debug("Single file upload!");
if (uploadfile != null && uploadfile.isEmpty())
return new ResponseEntity("please select a file!", HttpStatus.OK);
return new ResponseEntity("Successfully uploaded - " + uploadfile.getOriginalFilename(), new HttpHeaders(), HttpStatus.OK);
有效。
【讨论】:
你用postman rest客户端是对的,但是你试过ajax调用吗? 好的,检查一下:link【参考方案2】:我的假设:你的方法 saveUploadedFiles
抛出一个 IOException。
当您收到 400 Bad Request 作为响应时,我认为您应该调试您的
catch (IOException e)
e.printStackTrace();
return new ResponseEntity<>(HttpStatus.BAD_REQUEST);
阻止以找出导致 IOException 的原因。
【讨论】:
我已经调试并尝试过,请求甚至没有到达方法。 然后在这里查看这个答案:***.com/a/21045034/4763309以上是关于通过 REST 服务上传文件时如何解决 400() 错误的主要内容,如果未能解决你的问题,请参考以下文章
如何使用REST API将文件存储卷安装到azure容器实例
idea 内置tomcat jersey 跨服务器 上传文件报400错误