【OSS】 前端如何直接上传到OSS 上返回https链接,如果做到OSS图片资源加密访问

06-02 1775阅读

使用阿里云OSS(对象存储服务)进行前端直接上传并返回HTTPS链接,同时实现图片资源的加密访问,可以通过以下步骤实现:

前端直接上传到OSS并返回HTTPS链接

  1. 设置OSS Bucket:

    • 确保你的OSS Bucket已创建,并且设置为公共读或私有(根据访问控制需求)。
    • 在Bucket属性中启用HTTPS访问。
    • 生成上传策略和签名:

      • 在后端生成一个上传策略(Policy)和签名(Signature),用于前端直接上传文件。
      • 策略中应包括OSS的Endpoint、Bucket名称、上传路径、过期时间等。
      • 前端上传代码:

        • 使用阿里云OSS SDK(如ali-oss)进行上传。

        • 示例代码(使用JavaScript):

          import OSS from 'ali-oss';
          const client = new OSS({
            region: 'your-oss-region', // 例如: 'oss-cn-hangzhou'
            accessKeyId: 'your-access-key-id', // 建议在后端生成临时凭证
            accessKeySecret: 'your-access-key-secret', // 建议在后端生成临时凭证
            bucket: 'your-bucket-name'
          });
          async function uploadFile(file) {
            try {
              const result = await client.put('your-upload-path/' + file.name, file);
              console.log('File uploaded:', result.url); // 返回HTTPS链接
              return result.url;
            } catch (error) {
              console.error('Upload error:', error);
            }
          }
          // 示例调用
          const fileInput = document.getElementById('file-input');
          fileInput.addEventListener('change', (e) => {
            const file = e.target.files[0];
            if (file) {
              uploadFile(file);
            }
          });
          
        • 注意:出于安全考虑,不建议在前端直接使用永久AccessKey,建议使用后端生成临时凭证(STS Token)。

        • 获取HTTPS链接:

          • 上传成功后,result.url即为文件的HTTPS访问链接。

图片资源加密访问

  1. 使用HTTPS:

    • 确保OSS的Endpoint是HTTPS,这样所有上传和访问的链接都是通过HTTPS加密传输的。
    • Bucket权限控制:

      • 设置Bucket为私有,这样只有授权用户才能访问资源。
      • 通过生成预签名URL(Signed URL)来实现临时访问权限。
      • 生成预签名URL:

        • 在后端生成预签名URL,用于临时授权访问私有Bucket中的文件。

        • 示例代码(Node.js):

          const OSS = require('ali-oss');
          const client = new OSS({
            region: 'your-oss-region',
            accessKeyId: 'your-access-key-id',
            accessKeySecret: 'your-access-key-secret',
            bucket: 'your-bucket-name'
          });
          async function generateSignedUrl(fileName, expires) {
            try {
              const url = client.signatureUrl(fileName, {
                expires: expires, // 例如: 3600 表示1小时后过期
                process: 'image/resize,w_200' // 可选:对图片进行实时处理
              });
              console.log('Signed URL:', url);
              return url;
            } catch (error) {
              console.error('Generate signed URL error:', error);
            }
          }
          // 示例调用
          generateSignedUrl('your-file-path.jpg', 3600);
          
        • 前端使用预签名URL:

          • 前端从后端获取预签名URL后,可以直接在标签中使用该URL进行图片展示。

          • 示例:

            Encrypted Image

通过上述步骤,你可以实现前端直接上传文件到OSS并返回HTTPS链接,同时通过预签名URL实现图片资源的加密访问。

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们。

目录[+]

取消
微信二维码
微信二维码
支付宝二维码