阿里 OSS图片上传 —— 原生JS中使用

本文涉及的产品
对象存储 OSS,20GB 3个月
对象存储 OSS,内容安全 1000次 1年
对象存储 OSS,恶意文件检测 1000次 1年
简介: 这是最近开发遇到的一个坑,"可爱"的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档.然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.

前言



这是最近开发遇到的一个坑,"可爱"的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档.


然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.


这里给出两个方案:


原生JS(包括jQuery)里如何使用OSS图片上传

二是Vue项目如何使用OSS图片上传(晚点写)

10.png

OSS 简介及应用场景介绍



1. 全称: Object Storage Service,简称 OSS,是阿里云提供的海量、安全、低成本、高可靠的云存储服务。


2. 它具有与平台无关的RESTful API接口,能够提供99.999999999%的服务持久性。(牛皮就完事了)


使用场景:


图片上传

视频上传


原生JS使用OSS图片上传



1. 方法的定义

   // 方法的定义
   window.multipartUpload = function multipartUpload(storeAs, file, filename, filetype) {
      var client = new OSS.Wrapper({
        accessKeyId: 'youID',    // 
        accessKeySecret: 'youSecret',     // accessKeyId和accessKeySecret是OSS的访问密钥
        endpoint: 'http://xxxxx',            // OSS对应的区域地址
        bucket: 'osshanyatemp'                // 容器
      });
      // 这里可以做一些控制 大小,格式等
      if (file.size/1024/1024 < 2 || file.size/1024/1024 > 5) {
        layer.msg("照片大小只能在2~5M之间");
        return;
      }
      console.log(file);
      client.multipartUpload(storeAs, file).then(function (result) {
        var reviewUrl = result.url ? result.url : result.res.requestUrls[0].split('?')[0];
        // 这里可以拿到阿里云返回的临时地址 需要传给后台
        console.log(reviewUrl)   
      }).catch(function (err) {
        console.log(err);
      });
    }

2. 方法的调用

// 监听图片上传的元素change事件  
document.getElementById('uploadImg').addEventListener('change', function (e) {
    var upload_num = document.getElementById('uploadImg').files.length;
    var ff = document.getElementById('uploadImg').files;
    // 做一些相关判断
    if (ff.length > 8) {
      layer.msg("最多只能上传8张");
      return;
    }
    // 由于是多图上传,所以要用到循环
    for (var i = 0; i < upload_num; i++) {
      var filename = ff[i].name;
      var filetype = ff[i].type;
      // 生成10位随机数 原因是阿里云的机制问题
      // 当我上传完某张图片之后,不可上传同名的图片
      // 所以加了个随机数,每张图的名字都不一样      
      let randomNum = getRandom(10);
      let regStr = palindrome(ff[i].name)
      filename = randomNum + regStr;
      // 图片重命名
      Object.defineProperty(ff[i], 'name', {
        value: filename,
        writable: true,
        configurable: true,
        enumerable: true,
      });
      // 限制格式 png jpeg
      if (
        filename.indexOf("jpeg") != -1 || filename.indexOf('JPEG') != -1
        ) {
        var storeAs = "pic/" + new Date().getTime() + '_' + i + file.name;
        // 方法调用
        window.multipartUpload(storeAs, ff[i], filename, filetype);
      } else {
        alert('上传的格式不正确');
        return;
      }
    }
  });


相关实践学习
借助OSS搭建在线教育视频课程分享网站
本教程介绍如何基于云服务器ECS和对象存储OSS,搭建一个在线教育视频课程分享网站。
目录
相关文章
|
2月前
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1451 4
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
1月前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
40 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
2月前
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5467 16
|
2月前
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
107 1
|
3月前
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
44 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
4月前
|
存储 JavaScript 前端开发
Vue中实现图片上传,上传后的图片回显,存储图片到服务器 【使用对象存储OSS】
这篇文章介绍了在Vue中实现图片上传到阿里云OSS对象存储服务的完整流程,包括服务端签名直传的前提知识、后端设置、前端组件封装以及图片上传和回显的效果展示。
|
4月前
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
44 0
|
4月前
|
JavaScript 前端开发 API
从零开始学表单操作,jQuery 与原生 JavaScript 完全指南,带你轻松掌握网页交互关键!
【8月更文挑战第31天】在网页开发中,表单是实现用户互动的关键元素。无论是收集信息、提交数据还是验证输入,都需要对表单进行有效操作。本文档介绍了如何使用原生 JavaScript 和 jQuery 操作表单,包括获取表单元素、读写表单值、处理表单提交及验证等核心功能。jQuery 提供了更简洁的语法和更好的兼容性,但原生 JavaScript 在性能上有优势。选择合适的方法取决于项目需求和个人偏好。下面通过具体示例展示了两种方式的操作方法。
42 0
|
5月前
|
运维 Serverless 对象存储
函数计算产品使用问题之如何配合OSS实现接口收到的图片或文件直接存入OSS
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
5月前
|
缓存 Java 对象存储
配置自己的 阿里OSS 环境,但在引入自己创建的依赖时出现报错。
配置自己的 阿里OSS 环境,但在引入自己创建的依赖时出现报错。
下一篇
DataWorks