前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Vue上传文件遇到的问题[通俗易懂]

Vue上传文件遇到的问题[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-10 16:38:31
6840
发布2022-11-10 16:38:31
举报
文章被收录于专栏:全栈程序员必看

问题

之前项目中前端使用了vue-cli,引入了上传组件,所以在上传文件时很容易,没有考虑太多问题。

image-cropper组件中 有url属性,直接使用:url=”文件服务器地址”绑定上传的地址即可。

代码语言:javascript
复制
<el-form-item label="讲师头像">
<!-- 头衔缩略图 -->
<pan-thumb :image="teacher.avatar"/>
<!-- 文件上传按钮 -->
<el-button type="primary" icon="el-icon-upload" @click="imagecropperShow=true">更换头像
</el-button>
<!-- v-show:是否显示上传组件 :key:类似于id,如果一个页面多个图片上传控件,可以做区分 :url:后台上传的url地址 @close:关闭上传组件 @crop-upload-success:上传成功后的回调 <input type="file" name="file"/> -->
<image-cropper v-show="imagecropperShow" :width="300" :height="300" :key="imagecropperKey" :url="BASE_API+'/eduoss/fileoss'" field="file" @close="close" @crop-upload-success="cropSuccess"/>
</el-form-item>

解决

本次是用的是html基本页面,没有上传组件,那么文件需要自己获取。

代码语言:javascript
复制
<form autocomplete="off">
<!--省略其他输入域……-->
<div class="form-group">
<input class="form-control" type="file" name="fileupload" @change="upLoadPicture($event)" v-model="member.avatar" accept="image/*">
<i class="icon_images"></i>
</div>
<!--省略其他输入域……-->
<div id="pass-info" class="clearfix"></div>
<a href="#0" class="btn_1 gradient full-width">立即注册!</a>
</form>
代码语言:javascript
复制
let vm = new Vue({ 

el: "#app",
data() { 

return { 

member: { 

mobile: "",
password: "",
nickname: "",
avatar: "",
code: "",
}
}
},
methods: { 

upLoadPicture(e) { 

//获取文件
let file = e.target.files[0]
//将文件放入表单文件
let formData = new FormData();
formData.append('file', file);
//上传文件
axios.post("http://localhost:8004/oss/fileoss", formData)
.then(response => { 

alert("头像上传成功!")
//将返回的图片url赋值给member
vm.member.avatar=response.data.data.url
})
}
}
})
代码语言:javascript
复制
@PostMapping
public R uploadOssFile(MultipartFile file){ 

//获取文件
//返回上传文件路径
String url=ossService.uploadFileAvatar(file);
return R.ok().data("url",url);
}

FormData对象的详解,https://www.jianshu.com/p/e984c3619019

主要两步:

  • 使用@change和e.target.files[0],获取我们添加的文件,
  • new FormData();并且 formData.append(‘file’, file); 需要将文件条件到FormData()表单对象中,否则后端的MultipartFile 类型获取不到file对象,就会报出java.lang.NullPointerException。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/184073.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月9日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题
  • 解决
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档