腾讯云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); } } } }

浙公网安备 33010602011771号