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

做网站设计提成赚钱吗小公司根本办不了icp许可证

做网站设计提成赚钱吗,小公司根本办不了icp许可证,成都app定制开发公司,九江建设局网站解题思路 采用分片上传,同时每个分片多线程上传可以加速上传速度,上传速度提升10倍左右 在阿里云OSS Go SDK中,bucket.UploadStream 函数并没有直接提供,而是通过 bucket.UploadFile 或者 bucket.PutObject 等函数来实现文件上传…

解题思路

采用分片上传,同时每个分片多线程上传可以加速上传速度,上传速度提升10倍左右

在阿里云OSS Go SDK中,bucket.UploadStream 函数并没有直接提供,而是通过 bucket.UploadFile 或者 bucket.PutObject 等函数来实现文件上传。对于大文件上传,可以使用分片上传的方式,并且结合多线程来加速上传过程。

要结合多线程上传每个分片,你可以使用Go语言的并发特性,例如使用 goroutines 和 channels。以下是一个简化的示例,展示了如何使用Go语言并发上传文件的各个分片:

package mainimport ("bytes""context""fmt""io""log""os""sync""github.com/aliyun/aliyun-oss-go-sdk/oss"
)func main() {// 创建OSS客户端。client, err := oss.New("<Endpoint>", "<AccessKeyId>", "<AccessKeySecret>")if err != nil {log.Fatalf("Error creating OSS client: %v", err)}// 获取存储空间。bucket, err := client.Bucket("<BucketName>")if err != nil {log.Fatalf("Error getting bucket: %v", err)}// 打开本地文件。localFilePath := "<YourLocalFilePath>"file, err := os.Open(localFilePath)if err != nil {log.Fatalf("Error opening local file: %v", err)}defer file.Close()// 获取文件大小。fileInfo, err := file.Stat()if err != nil {log.Fatalf("Error getting file info: %v", err)}fileSize := fileInfo.Size()// 设置分片大小。partSize := int64(10 * 1024 * 1024) // 10MBuploadID, err := bucket.InitiateMultipartUpload("<YourObjectKey>")if err != nil {log.Fatalf("Error initiating multipart upload: %v", err)}// 创建一个通道来收集上传结果。partsChan := make(chan oss.UploadPart, 10)var wg sync.WaitGroup// 计算分片数量。partCount := int((fileSize+partSize-1)/(partSize))// 上传每个分片。for i := int64(0); i < int64(partCount); i++ {wg.Add(1)partNumber := i + 1offset := i * partSizevar reader io.Readerif partNumber == int64(partCount) {reader = io.LimitReader(file, fileSize-offset)} else {reader = io.MultiReader(io.LimitReader(file, partSize), bytes.NewReader(nil))}// 使用goroutine并发上传分片。go func(partNumber int64, offset int64, reader io.Reader) {defer wg.Done()var buffer bytes.Bufferbuffer.ReadFrom(reader)partData := buffer.Bytes()var err errorif partData, err = io.ReadAll(reader); err != nil {log.Printf("Error reading part %d: %v", partNumber, err)return}if partNumber*partSize+int64(len(partData)) > fileSize {partData = partData[:fileSize-(partNumber-1)*partSize]}uploadResult, err := bucket.UploadPart(uploadID, partNumber, bytes.NewReader(partData), int64(len(partData)))if err != nil {log.Printf("Error uploading part %d: %v", partNumber, err)return}partsChan <- oss.UploadPart{ETag:       uploadResult.ETag,PartNumber: partNumber,}}(partNumber, offset, reader)}// 等待所有分片上传完成。wg.Wait()close(partsChan)// 收集所有分片的结果。var parts []oss.UploadPartfor part := range partsChan {parts = append(parts, part)}// 完成分片上传。if err := bucket.CompleteMultipartUpload(uploadID, parts); err != nil {log.Fatalf("Error completing multipart upload: %v", err)}log.Println("Upload complete!")
}

在这个示例中,我们首先初始化了一个分片上传会话,并设置了每个分片的大小为10MB。接着,通过循环读取文件内容并逐个上传分片,最终完成整个文件的上传。我们使用了 sync.WaitGroup 来等待所有分片上传完成,并使用了一个通道 partsChan 来收集上传结果。

请确保你已经替换了 <Endpoint>, <AccessKeyId>, <AccessKeySecret>, <BucketName>, 和 <YourLocalFilePath> 为你的实际OSS配置信息,并且提供了一个有效的本地文件路径和对象键名。

这种方法允许你利用Go语言的并发特性来加速大文件的上传过程。

http://www.yayakq.cn/news/879939/

相关文章:

  • 网站建设课程性质视觉设计包括什么
  • 土地流转网站开发后台网站下载
  • 阿里云oss建站 直接上传wordpress专业别墅装修设计公司
  • 帮别人设计做关于图的网站青岛鲁icp 网站制作 牛商网
  • 外贸seo网站wordpress 封禁账号
  • 网站建设平台协议书模板下载word素材库
  • wordpress做企业网站wordpress 页脚改颜色
  • 旅游模板网站前端可以做网站吗
  • .电子商务网站的开发原则包括网站后台编辑器不能用
  • 五大类型网站市场调研一般怎么做
  • 网站单页支付宝支付怎么做的网站展示模板psd下载
  • 聊天室网站模板主机开通成功网站建设中
  • 湖北响应式网站设计制作wordpress招商
  • 不需要验证码的注册网站网站建设改版方案
  • 网站建设俄语免费创建社区平台
  • 百度怎么推广网站纺织网站模板
  • 什么网站可以自己做名片flash 源码网站
  • 在网站的标题上怎么做图标网站域名做跳转要收费吗
  • 网站建设精品课程asp 茶叶网站模板
  • 常州低价网站建设公司网业版
  • 九五至尊娱乐场网站免费不收费网站有哪些
  • 商业网站是怎么做的赛雷猴是什么意思
  • 公司网站建设的会计分录北京企业查询
  • app产品网站模板所有网站都要备案吗
  • 网站改版 价格成都锦江规划建设局网站
  • 驻马店哪家做网站好seo课程总结
  • 南宁网站建设免费推广wordpress m3u8 插件
  • 盐城市城乡和住房建设厅网站全国新农村建设中心网站
  • 高端品牌网站建设有哪些iis 网站访问权限 设置
  • 图片做旧网站wordpress和网站区别