当前位置: 首页 > 知识库问答 >
问题:

在单个请求中发送多部分文件和@RequestBody

夏振国
2023-03-14

在我正在开发的React web应用程序中,有一个包含一些用户数据的文件上传部分。然而,当我试图上传文件时,服务器抛出以下错误。

组织。阿帕奇。公猫util。http。文件上传。FileUploadException:请求被拒绝,因为找不到多部分边界

反应侧

function fileChangedHandler(event) {
    let formData = new FormData();
    formData.append("file", event.target.files[0]);
    formData.append("name", event.target.files[0].name);

    SENDER.post(
      "/api/task_resources",{ 
        addedBy: parseInt(localStorage.getItem('id')),
        taskId: parseInt(props.taskId)
      },{
          params: {
            file: formData
        }
        }         
    )
      .then(res => {
        if (res.status === 200) {
          alert("upload suc");
          window.location.reload()
        }
      })
      .catch(err => alert("err"));
  }

我的Spring Boot控制器如下所示。

@PostMapping("/task_resources")
  public void addResourceToTask(@RequestParam("file") MultipartFile file,@RequestBody AddTaskResourceRequest addResReq) {
      String fileName = fileService.storeFile(file);

      String fileDownloadUri = ServletUriComponentsBuilder.fromCurrentContextPath()
               .path("/api/downloadFile/")
               .path(fileName)
               .toUriString();

       UploadFileResponse response =  new UploadFileResponse(fileName, fileDownloadUri,
              file.getContentType(), file.getSize());

       taskResourceService.addResource(addResReq, fileDownloadUri);
  }

共有1个答案

能正青
2023-03-14

如果您的服务器不支持,则需要使用多部分/表单数据发送请求。下面是我使用Axios实现的示例。

const postGalleryImageRequest = async (sessionToken, userLogged, image) => {

    const data = new FormData();
    data.append('newImage', image);

    const result = await api.post('business/' + userLogged.businessId + '/gallery', data, {
        headers: { 
            Authorization: sessionToken,
            'Content-Type': 'multipart/form-data',
        }
    })  .then((response) => {
            return response.data
        })
        .catch(error => {
            ....
        })
    return result;
}
 类似资料:
  • 问题内容: 我需要进行API调用,以上传文件以及带有有关文件详细信息的JSON字符串。 我正在尝试使用python请求库来执行此操作: 这将引发以下错误: 如果我从请求中删除“文件”,则它可以工作。 如果我从请求中删除了“数据”,它将起作用。 如果我不将数据编码为JSON,则可以使用。 因此,我认为错误与在同一请求中发送JSON数据和文件有关。 关于如何使它工作的任何想法? 问题答案: 不要使用j

  • 我想发送一个'Multipart/form-data'字典数据没有文件 但API的回应是: 所以我改变了

  • 我使用Guzzle 6向第三方api(cloud Foundry)发送多部分表单请求。api采用两个参数“资源”和“应用程序”。这是我打电话的医生。简而言之,这会将二进制文件部署到应用程序服务器。下面是我在Guzzle中使用的代码。当试图发送一个空数组作为“resource”参数的内容时,我收到了一个“invalid resource type”错误。Guzzle似乎只允许使用字符串?api要求在

  • 我试图复制下面的POST请求使用Python中的请求模块: 请求文档建议使用files参数。 当我尝试以下呼叫: 我得到以下HTTP请求: 我还尝试使用数据参数: 导致以下HTTP请求: 我遇到的问题是,使用files参数会导致服务器无法识别调用,可能是由于HTTP请求中发送了意外的“filename”信息。使用数据参数发送错误的内容类型标题。 已知第一个请求正在我希望将请求发送到的服务器上工作-

  • 我想在API正文中以多部分形式发送以下POST请求: 上传传递两个属性(KEY)和(VALUE)发送arquivo(KEY)和(file)如何使用REST-Assured实现这一点 多部分打印https://ibb.co/0QQCkQv 尝试:

  • 如何用Python发送带有请求的?如何发送一个文件,我明白,但如何发送表单数据的方法不能理解。