Untitled
unknown
plain_text
a month ago
5.6 kB
3
Indexable
Never
private async Task UploadFileToFtpAsync(string localFilePath, string ftpHost, string ftpUsername, string ftpPassword, string folderName, string itemName, string agentName) { // Yükleme yapılacak dizini oluştur string folderUri = string.IsNullOrWhiteSpace(agentName) ? $"{ftpHost}/{folderName}/{itemName}" : $"{ftpHost}/{folderName}/{agentName}/{itemName}"; // Dizini oluştur veya kontrol et await CreateFtpFolders(folderUri, ftpUsername, ftpPassword); string fileName = Path.GetFileName(localFilePath); string fileUri = $"{folderUri}/{fileName}"; try { // Dosya yükleme isteğini oluştur FtpWebRequest request = (FtpWebRequest)WebRequest.Create(fileUri); request.Method = WebRequestMethods.Ftp.UploadFile; request.Credentials = new NetworkCredential(ftpUsername, ftpPassword); request.UseBinary = true; byte[] fileContents; using (FileStream sourceStream = new FileStream(localFilePath, FileMode.Open, FileAccess.Read)) { fileContents = new byte[sourceStream.Length]; await sourceStream.ReadAsync(fileContents, 0, (int)sourceStream.Length); } request.ContentLength = fileContents.Length; using (Stream requestStream = await request.GetRequestStreamAsync()) { await requestStream.WriteAsync(fileContents, 0, fileContents.Length); } using (FtpWebResponse response = (FtpWebResponse)await request.GetResponseAsync()) { Console.WriteLine("Upload File Complete, status {0}", response.StatusDescription); HighlightUploadedFile(fileName); // Dosya yüklendiğinde yeşil yap } } catch (Exception ex) { Console.WriteLine($"Upload failed for {fileName}: {ex.Message}"); HighlightFailedFile(fileName); } } private async Task CreateFtpFolders(string folderUri, string username, string password) { // URI'yi parçalar string[] folders = folderUri.Split(new[] { '/' }, StringSplitOptions.RemoveEmptyEntries); if (folders.Length < 2) { throw new ArgumentException("folderUri should contain at least two directories."); } // FTP host ve ilk dizin ayarla string basePath = $"ftp://{folders[1]}"; string currentPath = basePath; for (int i =5; i < folders.Length; i++) { currentPath = $"{currentPath}/{folders[2]}/{folders[3]}/{folders[4]}/{folders[i]}/{folders[i]}"; await CreateDirectoryIfNotExists(currentPath, username, password); } } private async Task CreateDirectoryIfNotExists(string directoryPath, string username, string password) { FtpWebRequest request = (FtpWebRequest)WebRequest.Create(directoryPath); request.Method = WebRequestMethods.Ftp.MakeDirectory; request.Credentials = new NetworkCredential(username, password); try { using (FtpWebResponse response = (FtpWebResponse)await request.GetResponseAsync()) { Console.WriteLine("Directory created: " + response.StatusDescription); } } catch (WebException ex) { FtpWebResponse response = (FtpWebResponse)ex.Response; if (response.StatusCode == FtpStatusCode.ActionNotTakenFileUnavailable) { // Dizin zaten mevcut Console.WriteLine("Directory already exists: " + directoryPath); } else { throw; } } } private void HighlightUploadedFile(string fileName) { fileListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; fileListBox.DrawItem += (sender, e) => { e.DrawBackground(); Brush brush = fileListBox.Items[e.Index].ToString() == fileName ? Brushes.Green : Brushes.Black; e.Graphics.DrawString(fileListBox.Items[e.Index].ToString(), e.Font, brush, e.Bounds); e.DrawFocusRectangle(); }; fileListBox.Invalidate(); // ListBox'u yeniden çiz count++; fileUploadInfoLabel.Text = $"Total Number of Files to Upload: {selectedFiles.Count} / {count}"; } private void HighlightFailedFile(string fileName) { fileListBox.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; fileListBox.DrawItem += (sender, e) => { e.DrawBackground(); Brush brush = fileListBox.Items[e.Index].ToString() == fileName ? Brushes.Red : Brushes.Black; e.Graphics.DrawString(fileListBox.Items[e.Index].ToString(), e.Font, brush, e.Bounds); e.DrawFocusRectangle(); }; fileListBox.Invalidate(); // ListBox'u yeniden çiz fileLodedListBox.Visible = true; filesNotLoadedLabel.Visible = true; fileLodedListBox.Items.Add(fileName); }
Leave a Comment