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

简介: 这是最近开发遇到的一个坑,"可爱"的前辈们留下来的宝贵财产,很不幸的是,一行注释都没给,所以开心(被迫)的去研究了一下文档.然而发现官方文档又臭又长,于是自己捣鼓了下,总算是搞出来了.

前言



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


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


这里给出两个方案:


原生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;
      }
    }
  });


相关实践学习
通义万相文本绘图与人像美化
本解决方案展示了如何利用自研的通义万相AIGC技术在Web服务中实现先进的图像生成。
目录
相关文章
|
4月前
|
编解码 数据处理 API
如何用阿里云OSS对图片和视频进行数据处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。OSS提供了丰富的功能,如图片的缩放、裁剪、旋转和水印添加等,用户只需在图片URL后附加处理参数即可实现自动化处理。同时,OSS还支持自定义样式模板,便于批量操作。对于视频处理,OSS支持转码、截图、拼接等功能,满足多终端播放需求。通过OSS的API和SDK,开发者可以方便地集成这些功能,提升数据管理效率。
|
6月前
|
存储 编解码 Serverless
Serverless架构下的OSS应用:函数计算FC自动处理图片/视频转码(演示水印添加+缩略图生成流水线)
本文介绍基于阿里云函数计算(FC)和对象存储(OSS)构建Serverless媒体处理流水线,解决传统方案资源利用率低、运维复杂、成本高等问题。通过事件驱动机制实现图片水印添加、多规格缩略图生成及视频转码优化,支持毫秒级弹性伸缩与精确计费,提升处理效率并降低成本,适用于高并发媒体处理场景。
339 0
|
4月前
|
存储 编解码 API
如何利用阿里云OSS进行图片和视频处理?
本文介绍了如何利用阿里云对象存储OSS进行图片和视频处理。内容包括OSS的基本功能、上传与管理媒体资源、图片处理(缩放、裁剪、旋转、水印等)、视频处理(转码、截图、拼接等)以及相关API的使用方法。通过OSS,用户可高效实现多媒体资源的存储与处理,适用于各类企业和开发者。
|
5月前
|
JavaScript 前端开发 API
淘宝店铺阿里旺旺采集工具,连接批量转旺旺ID,用Js接口实现效果
以下是淘宝店铺阿里旺旺采集工具的JS实现代码,包含批量获取店铺旺旺ID功能,当然仅
|
存储 人工智能 开发工具
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
只需要通过向AI助理提问的方式输入您的需求,即可瞬间获得核心流程代码及参数,缩短学习路径、提升开发效率。
1738 5
AI助理化繁为简,速取代码参数——使用python SDK 处理OSS存储的图片
|
6月前
|
前端开发 JavaScript 容器
制作b超单生成器, 假怀孕b超单图片制作, p图医院证明【css+html+js装逼恶搞神器】
本资源提供一个适合用于熟人之间恶搞的工具,效果逼真,仅供学习参考与娱乐。包含前端技术学习要点:语义化布局、响应式设计、Flexbox、图片自适应
|
11月前
|
移动开发 JavaScript 前端开发
【Html.js——图片折叠效果】折叠手风琴(蓝桥杯真题-1763)【合集】
本项目实现了一个图片折叠手风琴效果,使用jQuery完成。主要包括以下部分: - **介绍**:任务是通过点击图片实现折叠和展开的效果。 - **准备**:内置初始代码,包含 `css/style.css`、`images/` 文件夹、`js/` 文件夹及 `index.html` 等文件。启动 Web Server 服务可运行项目。 - **目标**:完善 `index.js` 文件,使页面达到预期的折叠效果。 - **规定**:严格按步骤操作,保持默认文件结构不变,并在完成后保持 Web 服务正常访问状态。 - **通关代码**:使用 jQuery 实现点击事件,为选中元素添加 `act
285 19
|
12月前
|
JavaScript 容器
带方向感知功能的js图片遮罩层插件
带方向感知功能的js图片遮罩层插件
|
存储 人工智能 缓存
AI助理直击要害,从繁复中提炼精华——使用CDN加速访问OSS存储的图片
本案例介绍如何利用AI助理快速实现OSS存储的图片接入CDN,以加速图片访问。通过AI助理提炼关键操作步骤,避免在复杂文档中寻找解决方案。主要步骤包括开通CDN、添加加速域名、配置CNAME等。实测显示,接入CDN后图片加载时间显著缩短,验证了加速效果。此方法大幅提高了操作效率,降低了学习成本。
5895 16
|
算法 Java Linux
java制作海报四:java BufferedImage 转 InputStream 上传至OSS。png 图片合成到模板(另一个图片)上时,透明部分变成了黑色
这篇文章主要介绍了如何将Java中的BufferedImage对象转换为InputStream以上传至OSS,并解决了png图片合成时透明部分变黑的问题。
701 1