为何要这样做:减轻后端数据库压力(个人觉得于前端没啥用,谁返回来都行)


代码部分:


  1. <template>
  2. <div class="upLoad">
  3. <div class="file">上传图片
  4. <input type="file" :accept="typeArr" @change="upload($event)">
  5. </div>
  6. </div>
  7. </template>
  8. <style lang="less" scoped>
  9. .file {
  10. position: relative;
  11. left: .26rem;
  12. top: .2rem;
  13. display: inline-block;
  14. background: #32d582;
  15. border: 1px solid #99D3F5;
  16. border-radius: 4px;
  17. padding: 4px 12px;
  18. overflow: hidden;
  19. color: white;
  20. text-decoration: none;
  21. text-indent: 0;
  22. line-height: 20px;
  23. }
  24. .file input {
  25. position: absolute;
  26. font-size: 100px;
  27. right: 0;
  28. top: 0;
  29. opacity: 0;
  30. }
  31. </style>
  32. <script>
  33. export default{
  34. props: ['typeArr', 'size'],
  35. data(){
  36. return {
  37. client: '',
  38. fileSize: 5000000
  39. }
  40. },
  41. methods: {
  42. getRight(){
  43. if (this.size) {
  44. this.fileSize = this.size;
  45. }
  46. this.client = new OSS.Wrapper({
  47. region: "同endpoint",
  48. secure: true,//https
  49. endpoint: '运维会告诉你',
  50. accessKeyId: "id和secret去阿里云控制台获得",
  51. /*accessKeyId,accessKeySecret两者到阿里云控制台获得*/
  52. accessKeySecret: "",
  53. bucket: '' /*装图片的桶名*/
  54. });
  55. },
  56. /**上传图片**/
  57. upload(event){
  58. var self = this;
  59. var file = event.target.files[0];
  60. var type = file.name.split('.')[1];
  61. var storeAs = new Date().getTime() + '.' + type;
  62. var boolean = true;
  63. if (file.size > this.fileSize) {
  64. Toast('亲,图片不能超过!' + this.fileSize / 1000 + 'kb');
  65. return false;
  66. }
  67. if (this.typeArr && this.typeArr.indexOf(type) > 0) {
  68. boolean = false;
  69. }
  70. if (boolean) {
  71. Toast('上传图片格式不支持!请选择' + this.typeArr);
  72. return false;
  73. }
  74. this.getRight();
  75. this.client.multipartUpload(storeAs, file).then(function (result) {
  76. console.log(result)//至此就拿到了返回的路径
  77. self.data.url = result.res.requestUrls[0].split('?')[0];
  78. }).catch(function (err) {
  79. console.log(err);
  80. });
  81. },
  82. }
  83. }
  84. </script>

父组件调用


  1. <up-Load class="files" typeArr="image/png,image/jpg,image/gif,image/jpeg" size="500000">
  2. </up-Load>

注:需引入官网推荐的oss对象的cdn


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

需再次强调的是:该代码为前端直传,accessKeyId,accessKeySecret都暴露在外面,更安全的方法可见官网的“服务端签名后上传”(貌似没示例)

原文地址:https://segmentfault.com/a/1190000013153127

vue 上传图片到阿里云(前端直传:不推荐)的更多相关文章

  1. vue中上传图片至阿里云oss

    1.开通阿里云的oss服务这些这里就不多做介绍了 2.登入阿里云的后台管理系统创建一个Bucket 3.在后台管理系统中进入访问控制 4.点击用户管理->新建用户->填写相关信息,就生成了 ...

  2. 阿里云OSS-web直传---在服务端c#签名,浏览器直传

    OSS web直传---在服务端php签名,浏览器直传 本文:OSS web直传---在服务端c#签名,浏览器直传 其他语言的范例地址:https://help.aliyun.com/document ...

  3. 上传图片到阿里云OSS和获取上传图片的外网url的步骤

    啥都不说  直接上代码 1.html: <form action="/bcis/api/headImgUpload.json" method="post" ...

  4. swift3.0 从相册选取或者拍照上传图片至阿里云OSS

    导入相应的库 import Photos import AliyunOSSiOS 选取照片需要继承 UIImagePickerControllerDelegate,UINavigationContro ...

  5. multipartUpload上传图片到阿里云

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  6. Java中使用RestFul接口上传图片到阿里云OSS服务器

    1.接口方法 import java.io.IOException; import javax.servlet.http.HttpServletRequest; import org.springfr ...

  7. 阿里OSS前端直传

    第一次写博客,如有错误请多多指教. 先上代码吧: ossUpload = function (file, fun, funParameter) { //第一此请求后台服务器获取认证请求 $.ajax( ...

  8. 压缩并上传图片到阿里云(jfinal)

    /** * 获取上传文件 * * @param r * @Return: com.oreilly.servlet.multipart.FilePart */public static FilePart ...

  9. 上传图片到阿里云oss

    阿里云地址 登录阿里云管理控制台,创建对象存储oss private static final String endpoint = "http://oss-cn-shanghai.aliyu ...

随机推荐

  1. 【待解决】maven创建web报Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins

    Cannot read lifecycle mapping metadata for artifact org.apache.maven.plugins:maven-war-plugin:maven- ...

  2. HDU1846(巴什博奕)

    Brave Game Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. Possible multiple enumeration of IEnumerable

    https://www.jetbrains.com/help/resharper/2016.1/PossibleMultipleEnumeration.html Consider the follow ...

  4. 【NOIP 2009】 Hankson的趣味题

    [题目链接] https://www.luogu.org/problemnew/show/P1072 [算法] x是b1的约数 筛出b1的约数,判断是否符合条件即可 [代码] #include< ...

  5. Python 生成requirement 使用requirements.txt

    第一步:python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号.以便新环境部署. requirements.txt可以通过pip命令自动生成和安装 ...

  6. selenium对浏览器属性操作的方法

    最大化 方法一 //指明ChromeDriver路径 System.setProperty(Src_url_string.Chrome_Driver, Src_url_string.Driver_ad ...

  7. MD5三种方法的学习总结

    MD5百度百科 MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致.是计算机广泛使用的杂凑算法之一(又译摘要算法.哈希算法),主流编程语言普遍已 ...

  8. lhgdialog.js弹出框

    官方学习网址: http://www.lhgdialog.com/ 个人认为它的样式不太好调,除此之外它也是一款实用的弹出框,专业的用来提示文字,消息,按钮添加function().ifame: 以下 ...

  9. Redis之Ubuntu下Redis集群搭建

    安装redis 首先下载redis $ wget http://download.redis.io/releases/redis-4.0.10.tar.gz $ .tar.gz $ cd redis- ...

  10. JavaScript函数传参

    函数传参一: <html> <head> <meta charset="utf-8"> <title>无标题文档</title ...