首页 > 解决方案 > 无法匹配 RESTful Multipart File 参数

问题描述

我正在尝试通过 fetch 库从 Web 客户端将文件发送到我的 Spring Boot 代码。以下给了我一个 400,BAD 请求说

 Required request part 'file' is not present

但是,据我所知,我确实提供了“文件”。

Java签名是:

@PostMapping("/async-files") 
    public DeferredResult<ResponseEntity<JobExecutionResult>> asyncUploadSoftLayerFile(@RequestParam(name = "file") MultipartFile multiPartFile)
            throws JobParametersInvalidException, JobExecutionAlreadyRunningException, JobRestartException,
            JobInstanceAlreadyCompleteException, IOException, JobExecutionAlreadyRunningException {

打字稿:

    var url = async_files;
    const formData = new FormData();
    formData.append('file',file);
//    formData.append('file',new Blob([file],{type: 'multipart/form-data'}),fileName);
    
    const response = fetch(url, {
        method: 'POST',
        body: formData,
        headers: {
            'X-Requested-With': 'XMLHttpRequest',
        }
    });
    result = response;

'file' 变量是一个 Javascript 字符串。它必须是这种方式,因为它在网络工作者内部运行,我想不出任何方法来传递 FileList 对象。如果我从 Java 中删除“文件”,它说它找不到多部分文件。如果我将 3 个对象传递给 FormData.append 方法,它会抱怨第二个对象不是对象(奇怪,因为我认为该方法需要一个字符串或一个 blob)。

我很感激你的帮助。我不能在 Javascript 中键入一行,而它却找不到要抱怨的地方。

谢谢,樵夫

标签: javascriptspring-bootformsmultipartform-dataform-data

解决方案


推荐阅读