Ejemplo n.º 1
0
        //--------------------------------------------------------------------------------
        //сохранение файла
        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("Сделано");
        }