当前位置:   article > 正文

vue3+elementplus+el-upload,文件上传,带参数传递到后台,亲测有用_vue上传文件到后端

vue上传文件到后端

网上查阅了很多资料,结果都不尽人意,废话不多说,直接上代码。

前端代码:

  1. <el-upload
  2. :on-preview="previewFile"
  3. limit="1"
  4. :on-change="changeFile"
  5. :auto-upload="false"
  6. :data="uploadForm.data">
  7. <template #trigger>
  8. <el-button size="small" type="primary">选取附件</el-button>
  9. </template>
  10. <el-button style="margin-left: 10px;" size="small" type="success"
  11. @click="submitUpload">上传到服务器</el-button>
  12. </el-upload>

其中:

1.on-preview: 点击文件列表中已上传的文件时的钩子(一般用作文件预览,在这里不重要)

2.on-change: 文件状态改变时的回调函数,可以用来给file赋值

  1. const file = ref()
  2. const changeFile = (uploadFile: UploadFile) => {
  3. file.value = uploadFile;
  4. }

3. :auto-upload="false" 这一步比较重要,必须要把自动上传关闭,因为我们会自己写方法上传。

4. :data="uploadForm.data" 需要携带的参数

  1. const uploadForm = reactive({
  2. data: {
  3. fileId: '',
  4. name: '',
  5. type: ''
  6. }
  7. })

5. 重要的 submitLicenseUpload 方法来了:

  1. const submitUpload = () => {
  2. const jsonStr = JSON.stringify(uploadForm.data);
  3. const blob = new Blob([jsonStr], {
  4. type: 'application/json'
  5. });
  6. let formData = new FormData();
  7. formData.append("obj", blob);
  8. // 这里很重要 file.value.raw才是真实的file文件,file.value只是一个Proxy代理对象
  9. formData.append("file", file.value.raw);
  10. let url = '你的后端url'
  11. let method = 'post'
  12. let headers =
  13. {
  14. 'Accept': 'application/json',
  15. 'Content-Type': 'application/json'
  16. };
  17. axios({
  18. method,
  19. url,
  20. data: formData,
  21. headers
  22. }).then(res => {
  23. console.log(res);
  24. console.log(res.data);
  25. });
  26. }

后端代码(springboot controller):

  1. @PostMapping("upload")
  2. @Operation(summary = "上传")
  3. @ResponseBody
  4. //注意 带参数的话,这里需要用RequestPart,RequestParam进不来
  5. public Result<YourClass> upload(@RequestPart("file") MultipartFile file, @RequestPart("obj") AttachmentVO vo) throws Exception {
  6. return null;
  7. }

至此,结束!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/805626
推荐阅读
相关标签
  

闽ICP备14008679号