当前位置: 首页 > article >正文

uniapp 使用htmlPlus从相册选择照片并上传OSS

详细步骤

  1. 使用 plus.gallery.pick 选择图片
plus.gallery.pick(function(path) {
    console.log('Selected image path: ' + path);
    // 处理上传
    uploadImage(path);
}, function(error) {
    console.error('Failed to select image: ' + error.message);
}, {
    filter: "image"
});
  1. 转换路径并准备上传
    通常,plus.gallery.pick 返回的路径是本地路径,你可以使用 plus.io 来读取文件并转换为 Blob 或 Base64 格式,方便上传。
function uploadImage(filePath) {
    plus.io.resolveLocalFileSystemURL(filePath, function(entry) {
        entry.file(function(file) {
            var reader = new plus.io.FileReader();
            reader.onloadend = function(e) {
                var blob = new Blob([new Uint8Array(e.target.result)], { type: file.type });
                // 继续上传到 OSS
                uploadToOSS(blob, file.name);
            };
            reader.readAsArrayBuffer(file);
        });
    }, function(e) {
        console.error("Resolve file URL failed: " + e.message);
    });
}
  1. 上传到阿里云 OSS
    上传到 OSS 通常需要使用阿里云提供的 SDK 或者直接使用 HTTP 请求。这里是一个简单的 HTTP 上传示例:
function uploadToOSS(blob, fileName) {
    var xhr = new XMLHttpRequest();
    xhr.open('PUT', 'https://your-oss-bucket.oss-region.aliyuncs.com/' + fileName, true);
    xhr.setRequestHeader('Content-Type', blob.type);
    xhr.setRequestHeader('x-oss-object-acl', 'public-read');
    xhr.onload = function() {
        if (xhr.status === 200) {
            console.log('Upload successful!');
        } else {
            console.error('Upload failed: ' + xhr.status);
        }
    };
    xhr.onerror = function() {
        console.error('Upload error.');
    };
    xhr.send(blob);
}

注意事项
OSS 签名:在实际应用中,直接上传到 OSS 通常需要进行签名,以确保安全性。你需要在服务器端生成签名并将其传递到前端进行上传。

CORS 设置:确保你的 OSS Bucket 已经配置了 CORS,允许客户端直接上传。

SDK 使用:可以考虑使用阿里云官方提供的 OSS SDK,这样可以简化签名和上传流程。


http://www.kler.cn/a/573480.html

相关文章:

  • 火语言RPA--切割PDF文档
  • 【LangChain】存储与管理对话历史
  • Python项目-基于深度学习的校园人脸识别考勤系统
  • HTTP/2 服务器端推送:FastAPI实现与前端集成指南
  • spaCy 入门:自然语言处理的高效工具
  • 【wordpress】服务器已有LNMP环境(已运行WordPress),如何配置文档访问功能?
  • 12、JavaEE概述
  • HTML学习笔记(全)
  • 区块链共识机制深度揭秘:从PoW到PoS,谁能主宰未来?
  • 【Keras图像处理入门:图像加载与预处理全解析】
  • 阿里云 linux centos7 安装mysql
  • linux server docker 拉取镜像速度太慢或者超时的问题处理记录
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_conf_read_token - 详解(1)
  • Camera相关配置
  • 谷歌自研AI大模型Gemini 2.0介绍以及API调用方法
  • idea中使用DeepSeek让编程更加便捷
  • 用于管理 Elasticsearch Serverless 项目的 AI Agent
  • Visual Studio Code (VSCode) 使用 GDB 进行调试
  • 【前端】【vue-i8n】【element】Element 框架国际化配置指南:从 element-ui 到 element-plus
  • Diffusion模型中时间t嵌入的方法