中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

開源展示型網站沈陽seo優(yōu)化新勢力

開源展示型網站,沈陽seo優(yōu)化新勢力,哈爾濱疫情最新公布,模板網站的弊端C# .NET 8實現Windows下批量壓縮csv文件為zip文件,然后異步上傳到box企業(yè)云服務網盤路徑,實現異常處理和寫入運行狀態(tài)日志,參數來自ini配置文件。 C# .NET 8代碼示例,包含INI配置讀取、CSV文件壓縮、Box上傳、異步處理和日志記錄…

C# .NET 8實現Windows下批量壓縮csv文件為zip文件,然后異步上傳到box企業(yè)云服務網盤路徑,實現異常處理和寫入運行狀態(tài)日志,參數來自ini配置文件。

C# .NET 8代碼示例,包含INI配置讀取、CSV文件壓縮、Box上傳、異步處理和日志記錄功能:

using System.Collections.Concurrent;
using System.IO.Compression;
using IniParser;
using IniParser.Model;
using Box.V2;
using Box.V2.Auth;
using Box.V2.Config;
using Box.V2.Models;class Program
{private static readonly object _logLock = new object();private static string _logPath;static async Task Main(string[] args){try{// 讀取配置文件var config = LoadConfiguration("config.ini");// 初始化Box客戶端var boxClient = InitializeBoxClient(config);// 處理文件await ProcessFilesAsync(config, boxClient);}catch (Exception ex){Log($"全局異常: {ex.Message}");}}static Configuration LoadConfiguration(string configPath){var parser = new FileIniDataParser();IniData iniData = parser.ReadFile(configPath);return new Configuration{ClientId = iniData["BoxConfig"]["ClientId"],ClientSecret = iniData["BoxConfig"]["ClientSecret"],AccessToken = iniData["BoxConfig"]["AccessToken"],UploadFolderId = iniData["BoxConfig"]["UploadFolderId"],SourceFolder = iniData["FileConfig"]["SourceFolder"],ZipFolder = iniData["FileConfig"]["ZipFolder"],LogPath = iniData["FileConfig"]["LogPath"]};}static BoxClient InitializeBoxClient(Configuration config){_logPath = config.LogPath;var auth = new OAuthSession(config.AccessToken, "N/A", 3600, "bearer");var boxConfig = new BoxConfigBuilder(config.ClientId, config.ClientSecret, new Uri("http://localhost")).Build();return new BoxClient(boxConfig, auth);}static async Task ProcessFilesAsync(Configuration config, BoxClient boxClient){try{Directory.CreateDirectory(config.ZipFolder);Directory.CreateDirectory(Path.GetDirectoryName(_logPath));var csvFiles = Directory.GetFiles(config.SourceFolder, "*.csv");Log($"找到 {csvFiles.Length} 個CSV文件需要處理");var tasks = new ConcurrentBag<Task>();Parallel.ForEach(csvFiles, csvFile =>{tasks.Add(ProcessSingleFileAsync(csvFile, config, boxClient));});await Task.WhenAll(tasks);Log("所有文件處理完成");}catch (Exception ex){Log($"文件處理異常: {ex.Message}");}}static async Task ProcessSingleFileAsync(string csvFile, Configuration config, BoxClient boxClient){try{string zipFileName = $"{Path.GetFileNameWithoutExtension(csvFile)}_{DateTime.Now:yyyyMMddHHmmss}.zip";string zipPath = Path.Combine(config.ZipFolder, zipFileName);// 壓縮文件CreateZipFile(csvFile, zipPath);Log($"文件 {Path.GetFileName(csvFile)} 壓縮成功");// 上傳到Boxawait UploadToBoxAsync(boxClient, zipPath, config.UploadFolderId);Log($"文件 {zipFileName} 上傳成功");// 清理臨時壓縮文件(可選)File.Delete(zipPath);}catch (Exception ex){Log($"處理文件 {Path.GetFileName(csvFile)} 失敗: {ex.Message}");}}static void CreateZipFile(string sourceFile, string zipPath){using (var zipArchive = ZipFile.Open(zipPath, ZipArchiveMode.Create)){zipArchive.CreateEntryFromFile(sourceFile, Path.GetFileName(sourceFile));}}static async Task UploadToBoxAsync(BoxClient client, string filePath, string folderId){using (var fileStream = new FileStream(filePath, FileMode.Open)){var fileRequest = new BoxFileRequest{Name = Path.GetFileName(filePath),Parent = new BoxRequestEntity { Id = folderId }};await client.FilesManager.UploadAsync(fileRequest, fileStream);}}static void Log(string message){string logEntry = $"{DateTime.Now:yyyy-MM-dd HH:mm:ss} - {message}";lock (_logLock){File.AppendAllText(_logPath, logEntry + Environment.NewLine);}}
}public class Configuration
{public string ClientId { get; set; }public string ClientSecret { get; set; }public string AccessToken { get; set; }public string UploadFolderId { get; set; }public string SourceFolder { get; set; }public string ZipFolder { get; set; }public string LogPath { get; set; }
}

實現說明:

  1. 配置管理:

    • 使用IniParser包讀取INI配置文件
    • 配置參數包括Box認證信息、文件路徑和日志路徑
    • Configuration類用于存儲配置參數
  2. Box客戶端初始化:

    • 使用OAuth 2.0認證
    • 需要有效的訪問令牌(AccessToken)
  3. 文件處理:

    • 使用并行處理加速文件壓縮(Parallel.ForEach)
    • 每個文件生成帶時間戳的唯一ZIP文件名
    • 自動清理臨時壓縮文件(可選)
  4. 異步上傳:

    • 使用Box官方SDK的異步上傳方法
    • 支持大文件分塊上傳(SDK自動處理)
  5. 日志記錄:

    • 線程安全的日志寫入機制
    • 包含時間戳和詳細操作記錄
    • 支持并發(fā)寫入時的文件鎖定
  6. 異常處理:

    • 多層異常捕獲(全局、文件處理、單個文件)
    • 詳細的錯誤信息記錄

配置示例(config.ini):

[BoxConfig]
ClientId = your_client_id
ClientSecret = your_client_secret
AccessToken = your_access_token
UploadFolderId = 0[FileConfig]
SourceFolder = C:\CSVFiles
ZipFolder = C:\TempZips
LogPath = C:\Logs\upload.log

注意事項:

  1. Box認證:

    • 需要有效的Box開發(fā)者賬號和企業(yè)配置
    • 建議使用JWT認證代替直接訪問令牌(需修改認證邏輯)
  2. 性能優(yōu)化:

    • 根據網絡情況調整并行處理數量
    • 添加重試邏輯處理網絡波動
  3. 安全增強:

    • 敏感信息(如ClientSecret)建議加密存儲
    • 使用配置文件權限控制
  4. 擴展功能:

    • 添加文件校驗(MD5校驗和)
    • 實現增量上傳功能
    • 添加壓縮密碼保護
  5. 錯誤處理:

    • 添加不同異常類型的處理邏輯
    • 實現死信隊列處理持續(xù)失敗文件

使用時需要安裝以下NuGet包:

  • ini-parser
  • Box.V2

安裝包和發(fā)布Release版程序的腳本:

cd <.csproj文件所在的目錄>
dotnet add package Box.V2
dotnet add package ini-parser
dotnet build <.csproj文件完整路徑> /property:GenerateFullPaths=true /consoleloggerparameters:NoSummary /p:Configuration=Release /p:Platform="AnyCPU"
http://www.risenshineclean.com/news/50981.html

相關文章:

  • 網站建設推廣選stso88效果好91關鍵詞
  • 專業(yè)做網站的技術人員百度網站如何優(yōu)化排名
  • 怎么做網站開發(fā)中國最新消息
  • 深圳網站建設哪家公司好我贏網客服系統(tǒng)
  • window2003iis建好的網站營銷型網站建設論文
  • WordPress主題沒有刪除站內優(yōu)化seo
  • 做網站北京重慶seo技術教程博客
  • 長沙優(yōu)化網站技術廠家seo網站推廣有哪些
  • 網站建設和錢外貿網站免費推廣b2b
  • 網站如何能讓百度收錄網站數據
  • 做社區(qū)網站用什么程序寧波seo排名外包
  • 網站建設資訊版塊如何做用戶運營百度網盤搜索神器
  • 低代碼開發(fā)平臺 開源文大俠seo博客
  • 網站制作網站建設項目規(guī)劃書軟文平臺有哪些
  • 網站的建站流程個人建站
  • 網站做淘寶客aso優(yōu)化服務站
  • 做母嬰產品的網站寧波網站建設網站排名優(yōu)化
  • 武漢商城網站制作西安疫情最新通知
  • 建筑外觀設計網站推薦淘寶標題優(yōu)化網站
  • 做昆特牌的網站重慶seo教程
  • 修改數據庫密碼 進不了網站后臺石家莊網站建設
  • 園嶺網站建設附近有沒有學電腦培訓的
  • 做接口的網站廣告?zhèn)髅焦窘洜I范圍
  • java 網站開發(fā) 順序刷死粉網站推廣
  • 湛江企業(yè)網站建站模板靠譜的拉新平臺
  • 網站后臺更新怎么做可口可樂軟文范例
  • 山東疫情最新消息今天上海優(yōu)化網站seo公司
  • 鄭州百度網站優(yōu)化排名ios微信上的pdf亂碼
  • 網站建設解說詞百度手機助手下載2022官方正版
  • 酒店vi設計抖音seo培訓