我是靠谱客的博主 无限墨镜,这篇文章主要介绍前端element-ui中图片oss直传到阿里云,现在分享给大家,希望可以做个参考。

1、template中的内容

 <el-upload

              class="avatar-uploader"

              action=""

              :show-file-list="false"

              :on-success="handleAvatarSuccess"

              :http-request="Uploadfile"

            >

              <img

                v-if="pictureUrl.trim() != ''"

                :src="pictureUrl"

                class="avatar"

              />

              <i v-else class="el-icon-plus avatar-uploader-icon" />

            </el-upload>

2、引入

 <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-4.4.4.min.js"></script>

在第二个script中引入

import axios from "axios";

data中定义了在methods中使用,不定义也可下面直接let定义

 sendData: null,

     ossUrl: "",

     accessUrl: "",

  pictureUrl: "",

在methods中写

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
methods{ //自己编写的函数用于生成文件名,防止上传的文件重名  可以写也可以不写     getUUID() {       return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {         return (           c === "x" ? (Math.random() * 16) | 0 : "r&0x3" | "0x8"         ).toString(16);       });     },   Uploadfile(param) {       console.log(param);       let file = param.file; // 得到文件的内容       console.log(file);       //填写获取签名的地址       const getPolicyApiUrl =         "http://dev.graphchain.top:1002/aliyun/oss/authority"; //获取oss签名的地址 这是后端的那个接口地址       // 获取oss签名       axios({         method: "get",         url: getPolicyApiUrl,         headers: {           "Content-Type": "application/x-www-form-urlencoded",           "Access-Control-Allow-Origin": "*",         },       }).then((response) => {         if (response.status == 200) {           let policyData = response.data;           console.log(policyData);           /**                          ossUrl 换成自己的Bucket的外网地址,                          例如 https://human-resource-manage.oss-cn-shenzhen.aliyuncs.com                          */           this.ossUrl =             "http://" + policyData.bucketName + "." + policyData.endpoint; //填写自己OSS服务器的地址           // this.from.iconFilename=this.getUUID()+ file.name // 上面写的getUUID这个方法 这一步可以可不写,我这是因为后端需要我传名字           // console.log( this.from.iconFilename)           let fileName = this.getUUID() + "." + file.name.split(".").pop();           console.log(fileName);           this.accessUrl = policyData.dirName + "/" + fileName; //设置上传的访问路径           this.sendData = new FormData(); // 上传文件的data参数           this.sendData.append("OSSAccessKeyId", policyData.accessKeyId);           this.sendData.append("policy", policyData.policy);           this.sendData.append("signature", policyData.signature);           // this.sendData.append("keys", policyData.dirName);           this.sendData.append("key", this.accessUrl); //上传的文件路径           this.sendData.append("success_action_status", 200); // 指定返回的状态码           // this.sendData.append("type", "this.");           this.sendData.append("file", file);           this.sendData.append("callback", policyData.callback);           this.sendData.append("name", fileName);           // console.log(sendData);           console.log(this.sendData); //这是img的路径           // this.pictureUrl =           //   this.ossUrl + "/" + policyData.dirName + "/" + file.name;           //   console.log( this.pictureUrl)           this.from.iconFilename = fileName;           console.log(this.from.iconFilename);           axios.post(this.ossUrl, this.sendData).then((res) => {             this.pictureUrl = this.ossUrl + "/" + this.accessUrl; //获得到的url需要将其存数据库中             console.log(               "上传到阿里云的图片地址:" + this.ossUrl + "/" + this.accessUrl             );           });         }       });     }, }

如果遇到跨越问题看自己的地址是否和其他接口地址一致,可以连一下本地和线上试一下

最后

以上就是无限墨镜最近收集整理的关于前端element-ui中图片oss直传到阿里云的全部内容,更多相关前端element-ui中图片oss直传到阿里云内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(114)

评论列表共有 0 条评论

立即
投稿
返回
顶部