VUE 使用 Element-UI组件el-upload上传图片预览

本文介绍如何在Vue项目中利用Element UI的el-upload组件实现图片的本地预览功能。通过将auto-upload属性设为false,并在on-change事件中定义getLocalImg方法来生成用于预览的本地URL。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图

在这里插入图片描述
上传后预览
在这里插入图片描述

在el-upload组件中,把auto-upload设置为false,不会执行自动上传,给on-change一个触发事件getLocalImg,在getLocalImg方法中用于生成可用于本地预览的url

代码如下:
html

<template>
  <div>
  	<el-form>
  		<el-form-item class="relese_nameP" label="LOGO:">
  			<el-upload 
  				action="https://jsonplaceholder.typicode.com/posts/" 
  				:limit="1" 
  				:auto-upload="false" 
  				:on-change="getLocalImg">
				<div class="logo_upload_xuan">
					<i slot="default" class="el-icon-circle-plus-outline"></i>
					<span>选择图片</span>
				</div>
			</el-upload>
			<div class="logo_img">
				<div v-if="isHidden" class="logo_img_title">LOGO</div>
				<img v-else :src="releseList.logo" />
			</div>
  		</el-form-item>
    </el-form>
  </div>
</template>
js
<script>
	export default {
		data() {
			return {
				releseList:{
					logo:''
				},
				isHidden:true
			}
		},
		methods: {
			getLocalImg(event){
				// 获取上传图片的本地url,用于上传前的本地预览
				let url = '';
				if (window.createObjectURL != undefined) {
					url = window.createObjectURL(event.raw);
				} else if (window.URL != undefined) {
					url = window.URL.createObjectURL(event.raw);
				} else if (window.webkitURL != undefined) {
					url = window.webkitURL.createObjectURL(event.raw);
				}
				this.releseList.logo = url;
				this.isHidden = false;
			}
		}
	}
</script>
css
<style lang="scss">
.relese_nameP{
	display:flex;
	.logo_upload{
		.logo_upload_xuan{
			width:250px;
			height:30px;
			border:2px solid #DCDFE6;
			display:flex;
			justify-content:center;
			i{
				font-size:20px;
				color:#666;
				margin:5px 0;
			}
			span{
				color:#666;
				line-height:30px;
				margin-left:10px;
			}
		}
		.logo_img{
			width:250px;
			height:250px;
			border:4px dashed #DCDFE6;
			margin-top:20px;
			display:flex;
			flex-direction:column;
			justify-content:center;
			align-items:center;
			img{
				width:250px;
				height:250px;
				display:block;
			}
		}
	}
}
</style>
Vue.js 和 Element UI 结合可以方便地构建用户界面,Element UI 的 `el-upload` 组件恰好提供了一个现成的解决方案来处理文件上传,包括阿里云 OSS(Object Storage Service)。以下是使用 `el-upload` 实现阿里云OSS文件上传的基本步骤: 1. **安装依赖**: 首先,在 Vue 项目中安装 `ali-oss` 和 `axios`,它们分别是阿里云OSS的官方客户端库和用于发送HTTP请求的库: ``` npm install ali-oss axios ``` 2. **配置阿里云OSS**: 在你的项目中创建一个 `.env` 或者使用配置文件,添加阿里云访问信息,如 Access Key、Secret Key 和 bucket名称等: ```ini # .env or config.js ALI_OSS_ACCESS_KEY_ID=your_access_key_id ALI_OSS_SECRET_ACCESS_KEY=your_secret_access_key ALI_OSS_BUCKET_NAME=your_bucket_name ``` 3. **初始化OSS实例**: 在你的 Vue 组件里,导入必要的库,并使用环境变量初始化一个 OSS 对象: ```javascript import OSS from 'ali-oss'; const ossClient = new OSS({ accessKeyId: process.env.ALI_OSS_ACCESS_KEY_ID, secretAccessKey: process.env.ALI_OSS_SECRET_ACCESS_KEY, endpoint: 'http://oss-cn-hangzhou.aliyuncs.com', // 使用你所在区域的endpoint }); ``` 4. **`el-upload` 组件配置**: 将 `el-upload` 组件设置好,监听 `onSuccess` 事件并处理上传后的回调: ```html <template> <el-upload :action="uploadUrl" :on-success="handleSuccess" :before-upload="beforeUpload" ref="upload" multiple > <i class="el-icon-upload"></i> Click to Upload </el-upload> </template> <script> export default { data() { return { uploadUrl: '', // 这里需要拼接完整的上传URL,比如ossClient.putFile方法的结果 // 其他可能用到的变量 }; }, methods: { handleSuccess(response, file) { console.log('文件 ' + file.name + ' 上传成功'); ossClient.signURL(file.name).then(url => this.uploadUrl = url); // 获取上传到OSS的短链接 }, beforeUpload(file) { if (file.size > 1024 * 1024 * 5) { // 设置最大文件大小限制 message.error('File size exceeds the limit!'); return false; } return true; }, }, }; </script> ``` 5. **完整上传流程**: - 当用户选择文件后,组件会触发 `beforeUpload` 函数验证文件是否合法; - 如果合法,发起上传请求到 `uploadUrl`(通常由后端生成,这里仅作示例); - 文件上传成功后,`handleSuccess` 会被调用,获取上传成功的 URL 并更新到页面上。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值