/// <summary> /// Загрузить файл на сервер /// !!! добавить прогресс !!! /// </summary> /// <param name="localFilePath">Локальный путь и имя файла для загрузки.</param> /// <param name="remoteFileUri">Путь к файлу и имя файла на сервере.</param> public async Task <bool> UploadFileAsync(string localFilePath, Uri remoteFileUri) { bool result = false; Progress_Clear(); Show_Message($"Загрузка файла {localFilePath}"); if (quota.IsLimited) { FileInfo fileInfo = new FileInfo(localFilePath); if (quota.QuotaAvailableBytes < fileInfo.Length) { LogController.Warn(logger, $"Недостаточно места на сервере"); Progress_Complete(); Show_Message(); return(false); } } try { using (WebDavSession session = new WebDavSession(Server, httpClientHandler, version)) { Progress <WebDavProgress> progress = new Progress <WebDavProgress>(); progress.ProgressChanged += Progress_ProgressChanged; session.Timeout = TimeSpan.FromDays(1); Stream stream = File.OpenRead(localFilePath); if (Settings.SpeedLimiter.IsLimitUpload) { stream = new ThrottledStream(stream, Settings.SpeedLimiter.UploadSpeedLimit * 1024); } Set_Stream(stream); string contentType = MimeMapping.GetMimeMapping(localFilePath); result = await session.UploadFileWithProgressAsync(remoteFileUri, stream, contentType, progress, CancellationToken.None); if (result) { LogController.Info(logger, $"Файл успешно загружен: {localFilePath}"); Progress_Complete(); } else { LogController.Warn(logger, $"Файл не загружен: {localFilePath}"); } Close_Stream(); //stream.Dispose(); } } catch (Exception e) { LogController.Error(logger, e, $"Ошибка загрузки файла: {localFilePath}"); } Show_Message(); return(result); }