腾讯云Oss直传的第一个案例

第一个案例只考虑用OssSdk把任务ping通就行啦,先不用考虑太多的场景需求。

code here

上传的service Class

using CosOssSdk;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;namespace TensentYunUpload
{public class ImageUploadServices{/// <summary>/// 初始化/// </summary>private static ImageUploadServices _instance;//public readonly SqLiteDbUtil _dbUtil = new SqLiteDbUtil();public static ConcurrentQueue<string> ImaeUpload_File = new ConcurrentQueue<string>();public enum AnscardUplodaState{  [Display(Name = "待上传")]WaitToUpload = 0,[Display(Name = "正在上传")]Uploading = 1,[Display(Name = "上传成功")]UploadSuccess = 2,[Display(Name = "上传失败")]UploadFailed = 3,}private static int Tasks_Count;private int _tasks_state = 0;private DateTime Tasks_Time;public Thread Tasks_Thread;public int Tasks_State{get{return _tasks_state;}set{_tasks_state = value;if (value == 0){Tasks_Timer();}}}public static ImageUploadServices GetInstance(){return _instance ?? (_instance = new ImageUploadServices());}private ImageUploadServices(){}public void Tasks_Init(){Tasks_Thread = new Thread(Tasks_Run);Tasks_Time = DateTime.Now;}/// <summary>/// 时间统计/// </summary>private void Tasks_Timer(){}private void Tasks_Run(){int Tasks_Count_Max = 2;  while (true){if (ImaeUpload_File != null && ImaeUpload_File.Count > 0 && Tasks_Count < Tasks_Count_Max){string file = null;bool isSuc = ImaeUpload_File.TryDequeue(out file); if (isSuc){Tasks_Do(file);// Task.Run(() => Tasks_Do(file));Tasks_Count++;}Thread.Sleep(100);}else{Thread.Sleep(1000);}}}private async Task Tasks_Do(string data){await Task.Run(() =>{try{UploadImagesToCos(data);}catch (Exception ex){}finally{Tasks_Count--;}});}public void Tasks_Add(string data){if (data != null){ImaeUpload_File.Enqueue(data);}}/// <summary>/// 上传至Cos/// </summary>private void UploadImagesToCos(string taskData){if(taskData != null) {string fileName = Path.GetFileName(taskData);string newUrl = CosossService.CreateOssService().SyncUploadFile($"GctAnalyse/AnswerSheet/4467690286423871488/4467701265748594688/3/4/{fileName}", taskData);string cosurl = newUrl;Console.WriteLine("成功上传:" + newUrl);}}}
}

调用:把D盘下的一个文件夹的图传上去试试(ps 当前每张图大小控制在200k左右)

// See https://aka.ms/new-console-template for more information
namespace TensentYunUpload
{static class Program{static void Main(string[] args){Console.WriteLine("Hello, World!");Program.upload();Console.ReadKey();}public static void upload(){ImageUploadServices  _uploadservice = ImageUploadServices.GetInstance();_uploadservice.Tasks_Init();_uploadservice.Tasks_Thread.Start();string folderPath = @"D:\Pics\original";if (!Directory.Exists(folderPath)){Console.WriteLine("指定的文件夹不存在!");return;}string[] pngFiles = Directory.GetFiles(folderPath, "*.jpg", SearchOption.AllDirectories);Console.WriteLine("文件总数:" + pngFiles.Length);foreach (string filePath in pngFiles){_uploadservice.Tasks_Add(filePath);}}}
}