【问题标题】:How to resolve 400() error when file uploading via REST service通过 REST 服务上传文件时如何解决 400() 错误
【发布时间】: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);

}

【问题讨论】:

    标签: javascript java rest spring-boot file-upload


    【解决方案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 的原因。

    【讨论】:

    猜你喜欢
    • 2016-07-03
    • 2023-02-07
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 2018-03-28
    • 2014-04-19
    • 2011-01-29
    相关资源
    最近更新 更多