//-------------------------------------------------------------------------------- //сохранение файла private void backgroundDownloader_DoWork(object sender, DoWorkEventArgs e) { MyFile file=(MyFile)e.Argument; using (FileStream output = new FileStream(file.Path, FileMode.Create)) { SinchronizeFileProgressInfo.ProgressBytes = 0; SinchronizeFileProgressInfo.ProgressProcent = 0; SinchronizeFileProgressInfo.Action = FileStatus.Download; using (FileSystemClient serverFileSystem = new FileSystemClient()) { StreamWithProgress fileSourceStream = new StreamWithProgress(serverFileSystem.GetFileStream(selectedFileId, Account.GetUserEmail(), Account.GetUserPass())); fileSourceStream.ProgressChanged += SetProgressInfoData; fileSourceStream.CopyTo(output); } } }
//-------------------------------------------------------------------------------- //сохраняет файл public void DownloadFile(StreamWithProgress fileSourceStream, MyFile file ) { logger.Debug("Получение файла с сервера " + file.ToString()); string fileFullPath = StorageFolder + "\\" + file.Path + "\\" + file.Name; FileStream outputStream = GetFileStream(file.Path, file.Name); try { fileSourceStream.CopyTo(outputStream); fileSourceStream.Close(); } catch (IOException ex)// клиент закрыл поток { logger.Error("Сервер закрыл соединение. " + ex.Message); } outputStream.Close(); FileInfo savedFileInfo = new FileInfo(fileFullPath); logger.Debug("Исходный файл:{0}, Полученный файл:{1}", file.Size, savedFileInfo.Length); if (file.Size != savedFileInfo.Length) { logger.Error("Размер файл полученного файла не соответствует исходному. Полученный файл будет удален!"); } logger.Info("Сделано"); }