我试图使这一功能时,用户可以上传简历和他的图像.

然而,每当我try 同时将两者发送到后端时,我都会收到错误请求错误400.我试着改变一些东西,但我似乎就是弄不明白为什么我上传了图片或简历,同时 comments 了第一个,或者后一个,当我分开做的时候,它运行得很好.

以下是我的后端代码:

  @Post('signup')
  @UseInterceptors(FileInterceptor('cv'), FileInterceptor('avatarImage'))
  async signUp(
    @Body() signupDto: SignupDto,
    @UploadedFile() cv: Express.Multer.File,
    @UploadedFile() avatarImage: Express.Multer.File,
  ): Promise<any> {
    if (!cv) {
      throw new Error('CV file is required.');
    }
    signupDto.cvFileName = cv.originalname;
    signupDto.cvFileBuffer = cv.buffer;

    signupDto.cv = await this.fileUploadService.uploadFileCv(
      signupDto.cvFileName,
      signupDto.cvFileBuffer,
    );

    if (!avatarImage) {
      throw new Error('Avatar Image is required');
    }

    signupDto.avatarImageName = avatarImage.originalname;
    signupDto.avatarImageFileBuffer = avatarImage.buffer;

    signupDto.avatarImage = await this.fileUploadService.uploadImage(
      signupDto.avatarImageName,
      signupDto.avatarImageFileBuffer,
    );
    
    return this.userService.createUser(signupDto);
}

我可以分开寄,但不能同时寄. 此外,我还提供了获取逻辑的片段.

  const handleRegistration = async (event: FormEvent<HTMLFormElement>) => {
    event.preventDefault();

    const formData = new FormData();
    if (selectedCvFile.length > 0) {
      formData.append("cv", selectedCvFile[0] || "");
    }
    if (selectedImagesForAvatar.length > 0) {
      formData.append("avatarImage", selectedImagesForAvatar[0] || "");
    }
 
    formData.append("username", formState.username || "");
    formData.append("firstName", formState.firstName || "");
    formData.append("lastName", formState.lastName || "");
    formData.append("password", formState.password || "");
    formData.append("email", formState.email || "");
    formData.append("phoneNumber", formState.phoneNumber || "");
    formData.append("address", formState.address || "");
    formData.append("city", formState.city || "");
    formData.append("role", formState.role || ""); 
    dispatch({ type: "CLEAR_ALERTS" });
    try {
      const response = await fetch("http://localhost:3000/auth/signup", {
        method: "POST",
        body: formData,
      });

      const data = await response.json();

      if (response.ok) {
        dispatch({
          type: "SHOW_SUCCESS",
          payload: `You have registered correctly !`,
        });
        console.log(data);
        localStorage.setItem("token", data.accessToken);

      } else {
        dispatch({ type: "SHOW_ERROR", payload: response.statusText });
        console.error("Registration failed:", response.statusText, response);
        // Handle failed registration, e.g., show an error message
      }
    } catch (error) {
      console.error("Error during registration:", error);
      // Handle any other errors that may occur during registration
    }
  };

如果您知道我可以做些什么来让它工作,请执行以下操作:)

谢谢

推荐答案

@Post('signup')
  @UseInterceptors(
    FileFieldsInterceptor([
      { name: 'cv', maxCount: 1 },
      { name: 'avatarImage', maxCount: 1 },
    ]),
  )
  async signUp(
    @Body() signupDto: SignupDto,
    @UploadedFiles()
    files: { cv?: Express.Multer.File; avatarImage?: Express.Multer.File },
  ): Promise<any> {
    const cv = files.cv[0];
    const avatarImage = files.avatarImage[0];

    console.log(cv, avatarImage);

我刚刚从官方doctor 那里实施了解决方案,它奏效了.

这个问题的主要结论是……阅读文档:)

Javascript相关问答推荐

以逗号分隔的列表来数组并填充收件箱列表

如何使用JavaScript动态地将CSS应用于ToDo列表?

创建1:1比例元素,以另一个元素为中心

Phaser框架-将子对象附加到Actor

Google maps API通过API返回ZERO_RESULTS,以获得方向请求,但适用于Google maps

空的结果抓取网站与Fetch和Cheerio

数字时钟在JavaScript中不动态更新

当Redux提供程序访问Reduxstore 时,可以安全地从Redux提供程序外部调用钩子?

如何将react—flanet map添加到remixjs应用程序

Prisma具有至少一个值的多对多关系

如何避免页面第一次加载时由于CSS样式通过JavaScript更改而出现闪烁

以Angular 实现ng-Circle-Progress时出错:模块没有导出的成员

Use Location位置成员在HashRouter内为空

当我try 将值更改为True时,按钮不会锁定

在D3条形图中对具有相同X值的多条记录进行分组

如何在Java脚本中对数据进行签名,并在PHP中验证签名?

Reaction useState和useLoaderData的组合使用引发无限循环错误

不协调嵌入图片

在高位图中显示每个y轴系列的多个值

TabNavigator和StackNavigator之间的Reaction Native中的导航问题