Vue上传图片功能【element ui】

用的是Element中的Upload组件实现功能

在这里插入图片描述

<!-- action表示图片要上传到的后台api接口 地址一定要是后台的根地址加上请求地址-->
            <!-- on-preview事件的作用是点击预览图片-->
            <!-- on-remove事件的作用是删除图片 -->
            <!-- list-type指定当前预览组件的呈现方式 -->
            <el-upload class="upload-demo" action="http://127.0.0.1:8888/api/private/v1/upload"
              :on-preview="handlePreview" :on-remove="handleRemove" list-type="picture" :headers="headerObj">
              <el-button size="small" type="primary">点击上传</el-button>
            </el-upload>
<script>
	data(){
		return {
		}
	},
	methods:{
		// 处理图片预览效果
	     handlePreview(){
	        
	    },
	    // 处理移除图片的操作
	    handleRemove(){
	      
	    },
	}
</script>

路径那里是axios请求根路径和接口文档里面后端给的路径拼接的
在这里插入图片描述
在这里插入图片描述

检测能否上传成功

只要看到这个就证明这张图片并没有上传成功
在这里插入图片描述

我已经通过axios的request拦截器为每一个请求都挂载了一个Authorization也就是token,挂载了这个也就说明每一个axios请求都会追加一个token
在这里插入图片描述

但是为什么配置了token还是显示无效的token呢?
是因为在调用upload组件上传图片在发ajax的时候没有用到axios,这个组件内部自己封装了ajax,我们需要通过headers属性手动为他绑定一个请求头。

<script>
	data(){
		return {
			 // 头片上传组建的headers请求头对象
      headerObj:{
        Authorization:window.sessionStorage.getItem('token')
      },
		}
	},
	methods:{
		// 处理图片预览效果
	     handlePreview(){
	        
	    },
	    // 处理移除图片的操作
	    handleRemove(){
	      
	    },
	}
</script>

现在就可以上传成功了
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue Element UI 是一个基于 Vue.js 的组件库,提供了许多现成的 UI 组件和功能,其中也包括上传图片功能。 首先,你需要在项目中引入 Element UI 库,可以通过 npm 安装或者 CDN 引入。然后,在需要使用上传图片功能的组件中,添加 el-upload 组件,并配置对应的属性。 el-upload 组件的主要属性包括 action、headers、multiple、show-file-list 等,其中 action 属性指定图片上传的后端接口地址,headers 属性指定上传请求的头部信息,multiple 属性指定是否支持多选图片,show-file-list 属性指定是否显示上传的文件列表。 以下是一个基本的上传图片的示例代码: ``` <template> <el-upload class="upload-demo" action="/your-upload-api" :headers="{Authorization: 'Bearer ' + token}" :multiple="false" :show-file-list="false" :on-success="handleSuccess" :before-upload="beforeUpload"> <el-button size="small" type="primary">点击上传</el-button> </el-upload> </template> <script> export default { data() { return { token: '', // 上传需要的 token imageUrl: '', // 上传成功后返回的图片地址 }; }, methods: { handleSuccess(response, file, fileList) { // 上传成功的回调函数 this.imageUrl = response.data.imageUrl; }, beforeUpload(file) { // 上传前的校验函数 const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; if (!isJPG) { this.$message.error('上传图片只能是 JPG 或 PNG 格式!'); } const isLt2M = file.size / 1024 / 1024 < 2; if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB!'); } return isJPG && isLt2M; }, }, }; </script> ``` 在这个示例中,我们通过 el-upload 组件上传图片,上传成功后会触发 handleSuccess 方法,该方法将返回的图片地址保存在组件的 imageUrl 属性中。在上传之前,会通过 beforeUpload 方法进行校验,确保上传的文件格式和大小符合要求。 ### 回答2: Vue Element UI是一款基于Vue.js的组件库,它提供了一系列易于使用的UI组件,其中包括上传图片组件。该组件可以用于在Vue.js应用中上传图片,并在上传的同时显示图片的预览和上传进度。 上传图片组件有两种方式可供选择,一种是通过表单提交的方式上传图片,另一种是通过ajax的方式上传图片。以下是通过ajax的方式上传图片的步骤: 1. 引入Element UI组件库以及Vue.js库 首先,在Vue.js应用中,需要引入Element UI组件库和Vue.js库,这可以通过以下方式实现: ``` //main.js import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 以上代码引入了Element UI组件库和Vue.js库,并将Element UI组件库的样式文件引入。 2. 注册上传图片组件 在Vue.js应用中,需要通过Vue.component()方法进行组件的注册,可以通过以下方式实现上传图片组件的注册: ``` //upload-image.vue <template> <el-upload class="upload-demo" action="/api/upload" :on-success="handleSuccess" :before-upload="beforeUpload" :on-progress="uploadProgress" :show-file-list="false" > <el-button size="medium" type="primary">点击上传</el-button> </el-upload> </template> <script> export default { methods: { beforeUpload(file) { //判断文件是否符合要求,上传图片格式、大小等 const isJPG = file.type === 'image/jpeg' const isLt2M = file.size / 1024 / 1024 < 2 if (!isJPG) { this.$message.error('上传图片只能是 JPG 格式') } if (!isLt2M) { this.$message.error('上传图片大小不能超过 2MB') } return isJPG && isLt2M }, handleSuccess(response, file) { //上传成功后的处理 this.imageUrl = URL.createObjectURL(file.raw) this.$emit('upload-success', response.data) }, uploadProgress(event, file, fileList) { //上传进度的处理 this.percent = event.percent.toFixed(2) } }, data() { return { imageUrl: '', percent: 0 } } } </script> ``` 以上代码定义了一个上传图片的组件upload-image.vue,其中使用了Element UI提供的上传组件,并实现了上传前的文件检查,上传成功后的处理和上传进度的处理。 3. 在父组件中使用上传图片组件 在父组件中使用上传图片组件时,需要将upload-image.vue组件注册为子组件,使用以下代码: ``` //parent.vue <template> <div> <upload-image @upload-success="uploadSuccess"></upload-image> </div> </template> <script> import UploadImage from './upload-image.vue' export default { components: { UploadImage }, methods: { uploadSuccess(data) { //上传成功后的回调函数 this.$message.success('上传成功') } } } </script> ``` 以上代码定义了一个父组件parent.vue,并在其中使用了upload-image.vue组件,同时定义了当upload-image.vue上传成功时的回调函数uploadSuccess,可以在该函数中实现上传成功后的逻辑处理。 通过以上步骤,我们就可以在Vue.js应用中使用Element UI提供的上传图片组件,实现上传图片功能并且在上传的同时实现图片预览和上传进度的显示。 ### 回答3: Vue Element UI是一个基于Vue.js的桌面端和移动端UI组件库,它提供了丰富的UI组件和强大的交互行为,包括上传图片这样的功能。 实现上传图片的最简单方式是使用Element UI的el-upload组件,其基本用法如下: ``` <template> <el-upload class="upload-demo" action="/upload" :on-preview="handlePreview" :on-remove="handleRemove" :before-upload="beforeUpload" :file-list="fileList" :auto-upload="false"> <el-button slot="trigger" type="primary">选取文件</el-button> <el-button style="margin-left: 10px;" type="success" @click="submitUpload">上传到服务器</el-button> <div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div> </el-upload> </template> <script> export default { data() { return { fileList: [], }; }, methods: { handlePreview(file) { console.log(file); }, handleRemove(file) { console.log(file); }, beforeUpload(file) { const isJPG = file.type === 'image/jpeg' || file.type === 'image/png'; if (!isJPG) { this.$message.error('上传头像图片只能是 JPG/PNG 格式!'); return false; } const isLt500K = file.size / 1024 < 500; if (!isLt500K) { this.$message.error('上传头像图片大小不能超过 500KB!'); return false; } return true; }, submitUpload() { this.$refs.upload.submit(); }, }, }; </script> ``` 在以上代码中,我们通过绑定相应事件来处理上传前的验证和上传后的操作。其中,handlePreview、handleRemove、beforeUpload、submitUpload四个方法分别用来处理预览、删除、上传前验证和提交上传这些事件。在beforeUpload中,我们可以进行文件类型和文件大小的判断,并在验证失败时返回false来阻止上传。submitUpload方法中,我们通过$refs.upload.submit()的方式来手动触发上传操作。 在el-upload组件中,还提供了一些其他的属性和插槽,例如:action、headers、data、multiple、limit、accept、show-file-list、on-success、on-error、before-remove等,通过它们的配合使用,我们可以实现更加丰富的上传图片功能。 总之,通过Vue Element UI提供的el-upload组件来实现图片上传功能非常简单,只需要绑定相应事件和定义相应的属性,就可以轻松实现上传功能

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值