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

静态网站模版/google浏览器下载安装

静态网站模版,google浏览器下载安装,网站建设 排名,林芝seo1 介绍 在项目开发中,我们经常会使用对象存储,比如 Amazon 的 S3,腾讯云的 COS,阿里云的 OSS 等。本文我们以阿里云 OSS 为例,介绍怎么使用 Go 操作对象存储。 阿里云 OSS 提供了 REST Api 和 OSS Go SDK&#xff0…

介绍

在项目开发中,我们经常会使用对象存储,比如 Amazon 的 S3,腾讯云的 COS,阿里云的 OSS 等。本文我们以阿里云 OSS 为例,介绍怎么使用 Go 操作对象存储。

阿里云 OSS 提供了 REST Api 和 OSS Go SDK,本文我们介绍使用 SDK 操作 OSS,限于篇幅,我们只介绍上传和下载。


上传

SDK 支持多种上传功能,比如简单上传、追加上传、断点续传上传、分片上传等,我们以简单上传为例,介绍怎么使用 SDK 上传文件,简单上传功能分为流式上传和文件上传两种方式。

所谓流式上传,即使用文件流、网络流等作为 OSS 文件的数据源。

所谓文件上传,即使用本地文件作为 OSS 文件的数据源。

在项目开发中,流式上传(文件流和网络流)相对文件上传,使用的场景比较少。限于篇幅,我们只介绍文件上传这种方式。

在使用 SDK 之前,我们需要先使用 go get 获取包(也可以使用 go mod 方式),然后在代码中导入。

go get github.com/aliyun/aliyun-oss-go-sdk/oss

OSS 存储文件,实际上是将文件存储到 Bucket (存储空间)中,SDK 提供了一些操作 Bucket 的方法。

在获取 Bucket 实例之前,我们需要先获取 Client 实例。

func GetOssClient(endpoint, ak, sk string) (client *oss.Client, err error) {client, err = oss.New(endpoint, ak, sk)return
}

阅读上面这段代码,我们通过 SDK 的 New 函数,创建了一个 client 实例,需要注意的是,我们需要将 OSS 的 endpointak  sk 作为参数传入 New 函数,更多关于 client 的配置选项,请查阅 OSS Go SDK 文档。

我们在获取到 client 之后,可以使用 client 获取 bucket

func GetBucket(client *oss.Client, bucketName string) (bucket *oss.Bucket, err error) {bucket, err = client.Bucket(bucketName)return
}

阅读上面这段代码,我们通过 client 提供的 Bucket 方法,将我们创建的 bucket 的名字作为参数传入该方法中,创建了一个 bucket 实例,然后我们就可以去使用 bucket 实例提供的方法。

我们也可以使用 client 实例提供的方法,创建和删除 Bucket,但在实际项目开发中,一般都是让运维同事帮忙创建和删除,很少在代码中操作。

接下来,我们介绍几个 bucket 实例提供的方法。

场景一:上传本地文件

在项目开发中,经常会遇到需要用户上传本地文件的场景,比如设置头像、上传身份证照片等。

我们以设置头像为例,介绍如何将本地照片上传到 OSS。

示例代码:

err = bucket.PutObjectFromFile("a.jpg", "/Users/frank/Downloads/1.jpg")
if err != nil {fmt.Println("Error:", err)os.Exit(-1)
}

阅读上面这段代码,我们使用 bucket 实例的 PutObjectFromFile 方法,将本地的图片上传到 OSS 中,该方法还可以传入第三个参数(可选参数),用于指定上传文件的属性。

场景二:上传字符串

在项目开发中,经常会遇到需要用户上传字符串的场景,比如使用 OSS 存储文本内容。

我们以上传博客为例,介绍如何将字符串上传到 OSS。

示例代码:

blogConetnt := "This is my first blog"
err = bucket.PutObject("my-first-blog.txt", strings.NewReader(blogConetnt))
if err != nil {fmt.Println("Error:", err)os.Exit(-1)
}

阅读上面这段代码,我们使用 bucket 实例的 PutObject 方法,将字符串上传到 OSS 中,该方法还可以传入第三个参数(可选参数),用于指定上传文件的属性。

场景三:上传字节切片

在项目开发中,经常会遇到将字节切片格式的数据上传到 OSS 中,比如将 json.Marshal() 的字节切片上传到 OSS 中。

示例代码:

user := struct {UserId   int64  `json:"user_id"`UserName string `json:"user_name"`Email    string `json:"email"`
}{UserId:   10001,UserName: "frank",Email:    "gopher@88.com",
}
userData, _ := json.Marshal(user)
err = bucket.PutObject("user.txt", bytes.NewReader(userData))
if err != nil {fmt.Println("Error:", err)os.Exit(-1)
}

阅读上面这段代码,我们使用 bucket 实例的 PutObject 方法,将 json.Marshal() 的字节切片上传到 OSS 中。

我们也可以使用 bucket 实例的 PutObject 方法上传本地文件,但是一般都是使用 PutObjectFromFile 方法。


下载

OSS Go SDK 同样支持多种下载方式,相比文件上传,在实际项目开发中,文件下载的使用场景并不多,一般都是查询(读取)文件。

为了文章的完整,我们介绍了文件上传,也顺带简单介绍一下文件下载。

关于文件下载,SDK 也是支持流式下载和本地文件下载,本文我们以本地文件下载为例,介绍怎么使用 SDK 下载 OSS 中的文件到本地。

示例代码:

err = bucket.GetObjectToFile("a.jpeg", "/Users/frank/Downloads/oss.jpeg")
if err != nil {fmt.Println("Error:", err)os.Exit(-1)
}

阅读上面这段代码,我们使用 bucket 实例的 GetObjectToFile 方法,将 OSS 中的文件 a.jpeg 下载到本地。


 4 

总结

本文我们介绍 Go 怎么操作 OSS 阿里云对象存储,主要介绍了 OSS Go SDK 关于文件上传和文件下载的几个方法,建议感兴趣的读者朋友们阅读 OSS Go SDK 和OSS Go SDK Api 的相关文档,自己尝试写文件查询的代码。

相关文章:

Go 怎么操作 OSS 阿里云对象存储

1 介绍 在项目开发中,我们经常会使用对象存储,比如 Amazon 的 S3,腾讯云的 COS,阿里云的 OSS 等。本文我们以阿里云 OSS 为例,介绍怎么使用 Go 操作对象存储。 阿里云 OSS 提供了 REST Api 和 OSS Go SDK&#xff0…...

vue3 Suspense组件

在 Vue 3 中&#xff0c;<Suspense> 组件用于处理异步组件加载时的等待状态和错误处理。它允许你在加载异步组件时显示一个自定义的加载指示器&#xff0c;以及在加载失败时显示错误信息。以下是一个详细的 <Suspense> 组件的使用示例&#xff1a; 首先&#xff0…...

NlogPrismWPF

文章目录 Nlog&Prism&WPF日志模块实现原理添加配置注入服务应用测试其他模块怎么调用&#xff1f; Nlog&Prism&WPF 日志模块 介绍了为WPF框架Prism注册Nlog日志服务的方法 实现原理 无论是在WPF或者ASP.NET Core当中, 都可以使用ServiceCollection来做到着…...

文件上传漏洞(2), 文件上传实战绕过思路, 基础篇

文件上传漏洞实战思路(基础) 准备一句话木马文件 mm.php 一, 前端绕过 p1 浏览器禁用js先把mm.php后缀名修改为mm.jpg, 点击提交后, 用 burp 截取请求, 将数据包中的文件名修改回mm.php再提交. 二, 类型MIME绕过 p2 使用 burp 修改 Content-Type: image/jpeg 三, 黑名单绕…...

论文阅读 - Hidden messages: mapping nations’ media campaigns

论文链接&#xff1a; https://link.springer.com/content/pdf/10.1007/s10588-023-09382-7.pdf 目录 1 Introduction 2 The influence model 2.1 The influence‑model library 3 Data 4 Methodology 4.1 Constructing observations 4.2 Learning the state‑transiti…...

[AutoSAR系列] 1.3 AutoSar 架构

依AutoSAR及经验辛苦整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入浅出AutoSAR》 1. 整体架构 ​ 图片来源&#xff1a; AutoSar 官网 从官往图中可以看出autosar作为汽车ECU软件架构&#xff0c;是通过分层来实现软硬件隔离。就像大多数操作系统一样&#xff…...

迁移学习 - 微调

什么是与训练和微调&#xff1f; 你需要搭建一个网络模型来完成一个特定的图像分类的任务。首先&#xff0c;你需要随机初始化参数&#xff0c;然后开始训练网络&#xff0c;不断调整参数&#xff0c;直到网络的损失越来越小。在训练的过程中&#xff0c;一开始初始化的参数会…...

09 用户态跟踪:如何使用eBPF排查应用程序?

09 用户态跟踪&#xff1a;如何使用eBPF排查应用程序&#xff1f; sudo bpftrace -e usdt:/usr/bin/python3:function__entry { printf("%s:%d %s\n", str(arg0), arg2, str(arg1))} # -*- coding: UTF-8 -*- import socket from socket import SOL_SOCKET, SO_R…...

深入浅出排序算法之堆排序

目录 1. 算法介绍 2. 执行流程⭐⭐⭐⭐⭐✔ 3. 代码实现 4. 性能分析 1. 算法介绍 堆是一种数据结构&#xff0c;可以把堆看成一棵完全二叉树&#xff0c;这棵完全二叉树满足&#xff1a;任何一个非叶结点的值都不大于(或不小于)其左右孩子结点的值。若父亲大孩子小&#x…...

Linux 命令(11)—— tcpdump

文章目录 一、命令简介二、使用方法三、命令选项四、基本语法和使用方法1. 显示 ASCII 字符串2. 抓取特定协议的数据3. 抓取特定主机的数据4. 将抓取的数据写入文件5. 行缓冲模式 五、理解tcpdump的输出六、过滤表达式1. Host 过滤2. Network 过滤3. Proto 过滤4. Port 过滤5. …...

8.自定义组件布局和详解Context上下文

pages/index.vue layout布局运行在服务端 1、在项目的目录下新建layout文件夹&#xff0c;并新建一个blog.vue布局文件 2、在页面中的layout函数里&#xff0c;返回刚才新建布局文件的名字blog就可以使用了 export default {...layout (context) {console.log(context)retu…...

几个Web自动化测试框架的比较:Cypress、Selenium和Playwright

介绍&#xff1a;Web自动化测试框架对于确保Web应用程序的质量和可靠性至关重要。它们帮助开发人员和测试人员自动执行重复性任务&#xff0c;跨多个浏览器和平台执行测试&#xff0c;并在开发早期发现问题。 以下仅代表作者观点&#xff1a; 本文探讨来3种流行的Web自动化测…...

Android Studio中配置aliyun maven库

当下载第三方库失败的时候&#xff0c;通过Android Studio中配置aliyun maven库&#xff0c;达到正常下载库效果 在项目的根build.gradle里面&#xff08;不是module&#xff09;buildscriptde对应位置添加配置&#xff1a; maven { url https://maven.aliyun.com/repository/…...

记录使用阿里 ARoute 遇到的坑

1.按照官方一个配置好之后 尝试使用 跳转出现 Aroute Theres no route matched path"" 我这边遇到的坑是配置问题 kotiln 使用了 Java的配置 plugins {id("com.android.application")id("org.jetbrains.kotlin.android")id("kotlin-kapt&…...

lesson2(补充)关于const成员函数

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 前言&#xff1a; 将const 修饰的 “ 成员函数 ” 称之为 const 成员函数 &#xff0c; const 修饰类成员函数&#xff0c;实际修饰该成员函数 隐含的 this 指针 &#xff0c;表明在该成员函数中不能对类的任何成员进行修改…...

前端 :用HTML ,JS写一个 双色球彩票中将机制,因为时间不够,加上本人懒没有用CSS美化界面,多包涵

1.HTML <body><div id"content"><div id "top"><div id "username">用户号码&#xff1a;</div><div id "qiu"><span id "red">红球&#xff1a;</span><input id…...

前端页面如何自适应--4种方法

前端页面有很多方法可以实现。这里我将介绍五种常用的方法&#xff0c;并提供相应的代码示例。 1. 使用CSS媒体查询 通过CSS媒体查询&#xff0c;可以根据不同的屏幕尺寸应用不同的样式。在Vue组件中&#xff0c;可以在样式部分使用媒体查询&#xff0c;使排版根据屏幕大小进…...

2024王道考研计算机组成原理——总线

6.1 总线概述 每一个外设都通过IO接口和DB、CB、AB相连 三系统总线结构&#xff1a; 桥有总线仲裁的功能&#xff0c;就是把某一总线的使用权分给哪个设备&#xff1f; 6.1.2 总线的性能指标 总线复用&#xff1a;分时传输地址&数据 6.2 总线仲裁 通过控制总线来发送使…...

【Linux】进程概念(下)

进程概念 一、环境变量1. 命令行参数2. 常见的环境变量&#xff08;1&#xff09;PATH&#xff08;2&#xff09;PWD&#xff08;3&#xff09;HOME&#xff08;4&#xff09;env 查看所有的环境变量 3. 获取环境变量&#xff08;1&#xff09;通过代码获取环境变量&#xff08…...

基于Spring Boot的本科生就业质量设计与实现

摘 要 信息化爆炸的时代&#xff0c;互联网技术的指数型的增长&#xff0c;信息化程度的不断普及&#xff0c;社会节奏在加快&#xff0c;每天都有大量的信息扑面而来&#xff0c;人们正处于数字信息化世界。数字化的互联网具有便捷性&#xff0c;传递快&#xff0c;效率高&am…...

238. 除自身以外数组的乘积 --力扣 --JAVA

题目 给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法&#xff0c;且在 O(n) 时间复…...

如何判断一个类是线程安全的

线程安全 一个类或者程序提供的接口&#xff0c;多个线程之间的切换不会导致该接口的执行结果存在二义性&#xff0c;也就是不必考虑同步问题。 或者说一段代码可能会被多个线程同时执行&#xff0c;如果每次运行的结果和单线程执行的结果是一样的&#xff0c;并且其他变量的…...

MyBatis的各种查询功能

文章目录 情景查询一个实体类对象查询一个List集合查询单个数据查询一条数据为map集合查询多条数据为map集合方法一方法二 情景 如果查询出的数据只有一条&#xff0c;可以通过 实体类对象接收List集合接收Map集合接收&#xff0c;结果{password123456, sex男, id1, age23, us…...

【Tomcat】如何在idea上部署一个maven项目?

目录 1.创建项目 2.引入依赖 3.创建目录 4.编写代码 5.打包程序 6.部署项目 7.验证程序 什么是Tomcat和Servlet? 以idea2019为例&#xff1a; 1.创建项目 1.1 首先创建maven项目 1.2 项目名称 2.引入依赖 2.1 网址输入mvnrepository.com进入maven中央仓库->地址…...

Three.js 材质的 blending

Three.js 材质的 blending // blending modes export type Blending | typeof NoBlending| typeof NormalBlending| typeof AdditiveBlending| typeof SubtractiveBlending| typeof MultiplyBlending| typeof CustomBlending;// custom blending destination factors export t…...

关于pcl 给new出的数据赋值报错问题

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud (new pcl::PointCloud<pcl::PointXYZ>); for (size_t i 0; i < cloud->points.size (); i) //填充数据 { cloud->points[i].x 1024 * rand () / (RAND_MAX 1.0f); cloud->points[i].y 1024…...

window11 更改 vscode 插件目录,释放C盘内存

由于经常使用vscode开发会安装一些代码提示插件&#xff0c;然后C盘内容会逐渐缩小&#xff0c;最终排查定位到vscode。这个吃内存不眨眼的家伙。 建议&#xff1a;不要把插件目录和vscode安装目录放在同一个位置&#xff0c;不然这样vscode更新后&#xff0c;插件也会消失。 v…...

【PyQt学习篇 · ⑥】:QWidget - 事件

文章目录 事件消息显示和关闭事件移动事件调整大小事件鼠标事件进入和离开事件鼠标按下和释放事件鼠标双击事件鼠标按下移动事件 键盘事件焦点事件拖拽事件绘制事件改变事件右键菜单输入法 事件转发机制案例一案例二案例三 事件消息 显示和关闭事件 showEvent(QShowEvent)方法…...

Vue、jquery和angular之间区别

aVue、jquery、angular之间区别 angular与jquery区别angular和Vue angular与jquery区别 三个版本的输入数据绑定&#xff0c;都是单页面应用。 Angular <body ng-app><input type"text" ng-model"name"><p>{{name}}</p></body…...

MATLAB算法实战应用案例精讲-【图像处理】机器视觉(基础篇)(六)

目录 前言 几个高频面试题目 工业相机与普通相机的差别 一、 工业相机与普通相机的区别...