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

MultipartFile上传:415不支持的MediaType

聂季同
2023-03-14

我想上传带有spring-boot和vue的文件。但是,我有一个错误“415:Unsupported MediaType”。

这是我的Spring启动控制器。

@PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}, produces = {MediaType.APPLICATION_JSON_VALUE})
@ResponseBody
@ApiOperation(value = "회원 가입", notes = "<strong>아이디와 패스워드</strong>를 통해 회원가입 한다.") 
@ApiResponses({
    @ApiResponse(code = 200, message = "성공"),
    @ApiResponse(code = 401, message = "인증 실패"),
    @ApiResponse(code = 404, message = "사용자 없음"),
    @ApiResponse(code = 500, message = "서버 오류")
})
public ResponseEntity<User> register(
        @RequestParam("file") MultipartFile file,) throws IllegalStateException, IOException, URISyntaxException {
    ...

}

而且,这是我的vue代码。

<el-form-item prop="profileImg" label="프로필 사진" :label-width="state.formLabelWidth" >
  <input @change="fileSelect()" id="profileimg" type="file" accept="image/*">
</el-form-item>

const formData = new FormData()
        formData.append('userId', state.form.userId)
        formData.append('userName', state.form.userName)
        formData.append('password', state.form.password)
        formData.append('age', state.form.age)
        formData.append('gender', state.form.gender)
        formData.append('phoneNum', state.form.phoneNum)
        formData.append('email', state.form.email)
        formData.append('mbti', state.form.mbti)
        formData.append('guide', state.form.guide)
        formData.append('file', state.form.profileImg)

profileImg ({ commit }, payload) {
  return axios
    .post(`${BASE_URL}/api/v1/users`, payload,
      { 
        headers: {
          "Accept": "*/*", 
          "Content-Type": "multipart/form-data"
        }
      }
    )
}

我尝试@RequestPart多部分文件,但遇到同样的错误。我该如何修复它?

共有2个答案

公羊喜
2023-03-14

我在GitHub上找到了答案 你所要做的就是改变

@RequestParam("file") MultipartFile file)

与:

@RequestParam("file") FilePart file)
詹杰
2023-03-14

对不起,我不能添加评论,这个答案只是我的猜测

如果输出怎么办

request.getHeader(HttpHeaders.CONTENT_TYPE);

如果您的请求通过Nginx或其他代理,Content-Type可能已更改

 类似资料:
  • 我有一个Spring boot的项目,我正试图上传一个文件。 我在表单上使用multipart/form-data,在控制器中使用@requestPart。尽管所有的教程和解决方案都推荐使用@RequestParam,但它似乎不再起作用了,或者只对我起作用了。 例如,我有一种感觉,它可能与Spring boot的更新版本有关。我在http://www.mkyong.com/spring-boot/

  • 我知道已经有一个类似的问题,但它没有解决上述错误。 这是我在API控制器中的PUT操作,在中运行良好: 以下是我的网页上的代码: HTML 打字稿 我的服务是: 我还使用了尝试上述问题的答案,我将我的文件附加到中,但不幸的是,同样的错误。如果媒体类型中没有任何设置,如何修复此问题?

  • 我在使用Spring的reactive框架处理文件上传时遇到了一些问题。我想我正在跟踪文档,但无法摆脱/问题。 似乎Spring在将这些转换为时遇到了问题..?我卡住了--任何帮助都是可取的!

  • 问题内容: 自数小时以来,我一直在尝试纠正http错误,但它仍显示不支持的页面。我在邮递员中添加标题。 这是我的Java代码 这是我的档案 问题答案: 通过和如何在响应流和请求流之间对对象进行序列化和反序列化。 将会发生的是,将从提供者的注册表中进行搜索,以查找可以处理的媒体类型。如果找不到,则Jersey无法处理该请求,并将发送415不支持的媒体类型。通常,你还应该在服务器端记录一个异常。不知道

  • 我已经创建了一个示例web服务来进行post调用。 我使用的是Jersey JAX-RS和Maven。

  • 我正在使用最后一个(也是唯一一个) 带Spring防尘套 是虫子吗?或者我应该添加一些其他注释以使其正常工作?