flutter中采用腾讯云COS进行图片存储

首先配置文件添加  flutter_cos: ^0.0.3

添加COS配置

import 'dart:io';
import 'dart:io';
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:http/http.dart';class CosConfig {final String appid;final String region;final String bucket;CosConfig({required this.appid, required this.region, required this.bucket});
}class CosClient {final String secretId;final String secretKey;final CosConfig config;CosClient({required this.secretId, required this.secretKey, required this.config});Future<Map<String, dynamic>?> putObject({required String key, required File file}) async {final uri = Uri.parse('https://${config.bucket}.cos.${config.region}.myqcloud.com/$key');// 准备 Authorization HeaderMap<String, String> headers = _createAuthorizationHeader(file);// 发起 PUT 请求将文件上传到COSvar request = http.Request('PUT', uri)..headers.addAll(headers)..bodyBytes = await file.readAsBytes();http.StreamedResponse response = await request.send();if (response.statusCode == 200) {print('Upload success!');return {'url': 'https://${config.bucket}.cos.${config.region}.myqcloud.com/$key'};} else {print('Failed with status code: ${response.statusCode}.');return null;}}Map<String, String> _createAuthorizationHeader(File file) {// 这里应包含计算 Authorization 的逻辑,目前返回简化的 headersreturn {'Content-Type': 'application/octet-stream','Authorization':'Your_Authorization_String', // Replace with your actual Auth string computation'x-cos-security-token': '', // 如果使用临时密钥,则需提供};}
}

采用方法调用然后上传

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';
import 'package:aurio/utils/CosConfig.dart'; // 请确保这个库提供所需的CosClient和CosConfig类class ImageUploadExample extends StatefulWidget {const ImageUploadExample({super.key});@override_UploadImageToCosState createState() => _UploadImageToCosState();
}class _UploadImageToCosState extends State<ImageUploadExample> {final ImagePicker _picker = ImagePicker();Future<void> uploadImageToCos() async {print('开始选择图片');final XFile? image = await _picker.pickImage(source: ImageSource.gallery);if (image == null) {print('未选择图片');return;}print('图片选择成功: ${image.path}');File imageFile = File(image.path);// 创建配置var config = CosConfig(appid: '', // 这里填你实际的 appidregion: '', // 这里是你的 COS 服务区域bucket: '', // 这里是你的桶名称);print('配置创建完毕');// 创建 client 实例var client = CosClient(secretId: '', // 实际使用时请勿硬编码密钥信息secretKey: '', // 上线时务必使用安全方案储存和使用密钥config: config,);print('COS客户端创建成功,开始上传图片');// 上传图片var res = await client.putObject(key: '', // 指定文件存储在COS的路径file: imageFile,);if (res == null) {print('上传未返回结果');return;}if (res['url'] != null) {print('上传成功,图片 URL: ${res['url']}');// 可以在这里更新 UI 或执行其他逻辑,比如保存 URL 到服务器} else {print('上传失败,返回结果:$res');}}@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: const Text('上传图片到腾讯云 COS'),),body: Center(child: ElevatedButton(onPressed: uploadImageToCos,child: const Text('上传图片'),),),);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(超详细)基于动态顺序表实现简单的通讯录项目

前言&#xff1a; 我们在上一章节用c语言实现了线性表中的的动态顺序表&#xff0c;那么顺序表就只是顺序表吗&#xff1f;当然不是&#xff0c;使用顺序表结构可以实现很多项目&#xff0c;许多项目的数据结构都会用到顺序表&#xff0c;本章节我们就要使用顺序表实现一个简易…

等保一体机

等保一体机是面向等保场景推出的合规型安全防护产品。基于“一个中心&#xff0c;三重防护”的设计理念&#xff0c;通过内置全面、多样的安全能力&#xff0c;为政府、医疗、教育、企业等中小型客户提供快速合规、按需赋能的一站式等保合规解决方案。 等保一体机要求管理网络和…

jEasyUI 使用标记创建树形菜单

jEasyUI 使用标记创建树形菜单 jEasyUI 是一个基于 jQuery 的用户界面插件集合&#xff0c;它提供了一系列的组件&#xff0c;如菜单、窗口、表格等&#xff0c;以帮助开发者快速构建交互式的网页应用。树形菜单&#xff08;Tree Menu&#xff09;是 jEasyUI 中常用的组件之一…

【论文阅读】AttnDreamBooth | 面向文本对齐的个性化图片生成

文章目录 1 动机2 方法3 实验 1 动机 使用灵活的文本控制可以实现一些特定的概念的注入从而实现个性化的图片生成。 最经典的比如一些好玩的动漫人物的概念&#xff0c;SD大模型本身是不知道这些概念的&#xff0c;但是通过概念注入是可以实现的从而生成对应的动漫人物 两个…

创建阿里云的免费镜像仓库

1、登录 阿里云 首先进入阿里云的官网&#xff0c;如果没有注册的需要先注册&#xff0c;这里就不过多的讲解了。 2、搜索 登录完毕后点击右上角的控制台 进入管理页面。或者直接在搜索框中输入容器镜像服务 点击进入 这里我是已经开通过了&#xff0c;如果你还没有开通的…

SpringBoot 第一天

什么是Spring Boot 学习过spring&#xff0c;并且做过项目的估计都经历过&#xff0c;xml文件的繁杂配置&#xff0c;让人眼花缭乱&#xff0c;且极易出错&#xff0c;因此 Spring 一度被称为“配置地狱” 为了简化 Spring 应用的搭建和开发过程&#xff0c;Pivotal 团队在 S…

算法训练营day60

题目1&#xff1a;647. 回文子串 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int countSubstrings(string s) {vector<vector<bool>> dp(s.size(), vector<bool>(s.size(), false));int reslut 0;for(int i s.size() - 1;i > 0;…

什么是git?

前言 Git 是一款免费、开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。是的&#xff0c;我对git的介绍就一条&#xff0c;想看简介的可以去百度一下&#x1f618;&#x1f618;&#x1f618; 为什么要用git&#xff1f; OK&#xff0c;想象一下…

《C语言》文件操作

文章目录 一、认识文件1、文件的概念2、程序文件3、数据文件4、文件名 三、二进制文件和文本文件四、文件的打开和关闭1、流2、标准流3、文件指针4、文件的关闭和打开 四、文件的顺序读写文件的随机读写1、fseek2、ftell3、rewind4.int origin 一、认识文件 主要讨论数据文件 1…

代码随想三刷二叉树篇1

代码随想三刷二叉树篇1 144. 二叉树的前序遍历题目代码 145. 二叉树的后序遍历题目代码 94. 二叉树的中序遍历题目代码 102. 二叉树的层序遍历题目代码 107. 二叉树的层序遍历 II题目代码 199. 二叉树的右视图题目代码 637. 二叉树的层平均值题目代码 515. 在每个树行中找最大值…

Javaweb06-Jsp技术

Jsp技术 一.Jsp的运行原理 **概述&#xff1a;**JSP是Java服务器页面&#xff0c;既可以写静态页面代码&#xff0c;也可以写动态页面代码 **特点&#xff1a;**跨平台性&#xff0c;业务代码相分离&#xff0c;组件重用&#xff0c;预编译 运行原理&#xff1a; 客户端发生…

如何设计一个秒杀系统?

这篇分享源自之前购买的极客时间课程《如何设计一个秒杀系统》&#xff0c;以及书籍《亿级流量网站架构核心技术》。 这两个讲的都是关于高并发系统设计的&#xff0c;感觉收获颇多。 本篇内容对核心要点进行了摘录&#xff0c;也结合网上一些文章&#xff0c;希望能分享所得…

运算符及表达式+基本语句和函数使用的详细讲解

运算符及表达式 运算符及表达式 在C语言中&#xff0c;运算符是用于执行特定操作的符号&#xff0c;而表达式则是由运算符和操作数组成的式子。 1) 运算符 运算符的目数 单目运算符&#xff1a;只需要一个操作数&#xff0c;如 !&#xff08;逻辑非&#xff09;、&#xf…

简易开发一个app

即时设计网站 即时设计 - 可实时协作的专业 UI 设计工具 需要先设计好UI界面 上传到codefun 首次需要安装 自动生成代码 打开hb软件 新建项目 打开创建的项目 删除代码 复制代码过去 下载图片 将图片放到文件夹里 改为这种格式 index.vue 如果不需要uni-app导航栏可以修改 …

026、工具_redis-server

redis-server除了启动Redis外,还有一个 --test-memory选项。 redis-server- -test-memory可以用来检测当前操作系统能否稳定地分配指定容量的内存给 Redis,通过这种检测可以有效避免因为内存问题造成Redis崩溃,例如下面 操作检测当前操作系统能否提供1G的内存给Redis: red…

项目文件预览

在实际项目开发过程&#xff0c;项目使用数据存在多种形式&#xff0c;“文件”也是一种常见形式&#xff0c;因此&#xff0c;“文件预览”功能变成了常规需求。 kkFileView项目使用流行的spring boot搭建&#xff0c;易上手和部署。万能的文件预览开源项目&#xff0c;基本支…

【代码随想录算法训练Day39】LeetCode 62.不同路径、LeetCode 63.不同路径II

Day39 动态规划第二天 LeetCode 62.不同路径 二维dp数组的含义&#xff1a;走到位置为(i,j)的格子的走法为dp[i][j]种。 递推公式&#xff1a;dp[i][j]dp[i-1][j]dp[i][j-1]。 初始化&#xff1a;dp[i][0]和dp[0][j]都赋值为1. 递归顺序&#xff1a;从左往右&#xff0c;从上…

以太网基础知识(二)—NRZ,PAM4调制技术

1&#xff1a;码元 了解调制技术需要引出“码元”的概念。 一个码元就是一个脉冲信号&#xff0c;即一个最小信号周期内的信号&#xff0c;我们都能够理解&#xff0c;最简单的电路&#xff0c;以高电平代表1&#xff0c;低电平代表0&#xff0c;一个代表1或者0的信号&#x…

分层解耦

三层架构 controller:控制层&#xff0c;接收前端发送的请求&#xff0c;对请求进行处理&#xff0c;并响应数据&#xff0c; service:业务逻辑层&#xff0c;处理具体的业务逻辑。 dao:数据访问层(Data Access Object)(持久层)&#xff0c;负责数据访问操作&#xff0c;包括数…

No module named ‘torch.distributed.checkpoint.format_utils问题解决

完整代码&#xff1a; Traceback (most recent call last):File "/data/user/BMLU-use/src/English_chat/qwen1.5.py", line 97, in <module>main(model_pathargs.model_path,max_lengthargs.max_length,nameargs.name)File "/data/user/BMLU-use/src/En…