oss问题

思路:通过后端人员给的接口获取oss配置信息,上传文件或图片连同这些获取到的oss信息 上传到oss服务器。 

有几个注意的地方,上传成功时 不会有返回信息。 成功时的默认是204,后端可以设置为200。

选中图片就默认上传  :auto-upload = "true"

<el-form-item label="员工头像" prop="avatar">
						<el-upload
							class="avatar-uploader"
							ref="upload"
							name="file"
							:action="ossConfig.host"
							:data="ossConfig"
							:accept="'image/*'"
							:auto-upload="true"
							:show-file-list="false"
							:on-success="handleAvatarSuccess"
							:before-upload="beforeAvatarUpload"
							:on-change="handleAvatarChange"
							:multiple="false"
						>
							<img v-if="avatarUrl" :src="avatarUrl" class="avatar"/>
							<i v-else class="el-icon-plus avatar-uploader-icon"></i>
						</el-upload>
					</el-form-item>

在打开页面时就获取下oss信息

getOssConfig() { //获取oss配置
				let that = this;
				let ossExpireTime = parseInt(this.$localStorage.get("ossExpireTime")); //读取是否有oss过期时间

				if (ossExpireTime && (new Date() < new Date(ossExpireTime))) {
					let ossConfig = JSON.parse(this.$localStorage.get("ossConfig"));
					// 数据
					that.ossConfig.host = ossConfig.host;
					that.ossConfig.OSSAccessKeyId = ossConfig.accessid;
					that.ossConfig.policy = ossConfig.policy;
					that.ossConfig.Signature = ossConfig.signature;
					that.ossConfig.keyDir = ossConfig.dir;
				} else {
					this.$ajax({
						url: this.$ajax.apiUrl(`/sys/file/oss-sign`),
						method: "get",
						params: this.$ajax.adornParams({fileType: 0}, false)
					}).then(res => {
						if (res && res.code === 10000) {
							console.log('OSS信息', res)
							let ossConfig = JSON.parse(res.data);
							// 存入缓存
							this.$localStorage.set("ossConfig", res.data);
							this.$localStorage.set("ossExpireTime", ossConfig.expire);


							// 数据
							that.ossConfig.host = ossConfig.host;
							that.ossConfig.OSSAccessKeyId = ossConfig.accessid;
							that.ossConfig.policy = ossConfig.policy;
							that.ossConfig.Signature = ossConfig.signature;
							that.ossConfig.keyDir = ossConfig.dir;
						}
					});
				}
			},

 

图片上传前获取下oss的key和FileName

handleAvatarSuccess(res, file) {//图片上传成功
				this.avatarUrl = URL.createObjectURL(file.raw);
},
			beforeAvatarUpload(file) {//图片上传前
				console.log('beforeUpload', file);
				this.ossConfig.Filename = this.$tool.getUUID() + "." + file.type.split('/')[1];
				this.ossConfig.key = this.ossConfig.keyDir + '/' + this.ossConfig.Filename;
				console.log('ossConfig!!!', this.ossConfig);

				const isLt2M = file.size / 1024 / 1024 < 2;
				let isJPG = /.(gif|jpg|jpeg|png|GIF|JPG|PNG|JPEG)$/.test(file.name);

				if (!isJPG) {
					this.$message.warning("只能上传图片类型的文件");
				}
				if (!isLt2M) {
					this.$message.error("上传图片大小不能超过 2MB!");
				}
				return isJPG && isLt2M;
			},
			handleAvatarChange(file, fileList) {  //图片改变
				console.log('imgObj', file);

				const isLt2M = file.size / 1024 / 1024 < 2;
				let isJPG = /.(gif|jpg|jpeg|png|GIF|JPG|PNG|JPEG)$/.test(file.name);

				if (isJPG && isLt2M) {
					this.avatarUrl = window.URL.createObjectURL(file.raw);
				}
			},

 

转载于:https://my.oschina.net/u/560237/blog/3095070

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值