在写上传文件接口时使用了element自带的上传组件,但是在传文件到后端时莫名报错,经过排查发现是日志切面打印时出了问题。
一、上传组件代码:
<template>
<div>
<el-upload class="upload-demo" drag :action="uploadFile()">
<i class="el-icon-upload"></i>
<div class="el-upload__text">
将文件拖到此处,或
<em>点击上传</em>
</div>
<div class="el-upload__tip" slot="tip">只能上传pdf文件,且不超过500kb</div>
</el-upload>
</div>
</template>
<script>
export default {
data() {
return {
fileList: [],
bfile: []
}
},
methods: {
// 上传文件
uploadFile: function() {
return 'http://localhost:8081/file/upload'
}
}
}
</script>
<style scoped>
</style>
二、后端代码
@RestController
@CrossOrigin
@RequestMapping(value = "/file")
@Slf4j
public class FileController {
@ApiLog
@PostMapping("/upload")
String uploadFile(MultipartFile file) {
return "成功";
}
}
三、日志切面出错代码
log.info("Request Args : " + new Gson().toJson(proceedingJoinPoint.getArgs()));
出错原因:MultipartFile文件无法转成JSON串
四、修改后代码,遇到MultipartFile对象跳过转换JSON
if ("StandardMultipartFile".equals((proceedingJoinPoint.getArgs())[0].getClass().getSimpleName())) {
log.info("Request Object : " + (proceedingJoinPoint.getArgs())[0].getClass().getName());
}else {
log.info("Request Args : " + new Gson().toJson(proceedingJoinPoint.getArgs()));
}