我想用spring boot和vue上传文件。但是,我有一个错误“415:不支持的媒体类型”。
这是我的弹簧启动控制器。
@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 MultipartFile file
了,但有同样的错误。我该如何解决?