public ActionResult DownLoad(Guid id)
        {
            FileStorageModel model;

            using (var service = new FileCollectorServiceClient())
            {
                model = service.DownloadFile(id).Select(r => new FileStorageModel()
                {
                    Id         = r.Id,
                    Name       = r.Name,
                    Path       = r.Path,
                    Type       = r.Type,
                    Size       = r.Size,
                    CreateDate = r.CreateDate.DateTime.ToShortDateString()
                                 + " : " +
                                 r.CreateDate.DateTime.ToShortTimeString(),
                    LoadDate = r.LoadDate.DateTime.ToShortDateString()
                               + " : " +
                               r.LoadDate.DateTime.ToShortTimeString(),
                    Data = r.Data
                }).Single();
            }

            return(new FileContentResult(model.Data, "application/octet-stream")
            {
                FileDownloadName = model.Name
            });
        }
        public ActionResult Index()
        {
            ViewBag.Message = "";

            IEnumerable <FileStorageModel> model;

            using (var service = new FileCollectorServiceClient())
            {
                model = service.GetFiles().Select(r => new FileStorageModel()
                {
                    Id         = r.Id,
                    Name       = r.Name,
                    Path       = r.Path,
                    Type       = r.Type,
                    Size       = r.Size,
                    CreateDate = r.CreateDate.DateTime.ToShortDateString()
                                 + " : " +
                                 r.CreateDate.DateTime.ToShortTimeString(),
                    LoadDate = r.LoadDate.DateTime.ToShortDateString()
                               + " : " +
                               r.LoadDate.DateTime.ToShortTimeString(),
                    Data = null
                }).ToList();
            }
            return(View(model));
        }
 public void GetFilesTest()
 {
     try
     {
         using (var service = new FileCollectorServiceClient())
         {
             var result = service.GetFiles();
         }
         Assert.IsTrue(true);
     }
     catch (Exception e)
     {
         Assert.Fail(e.ToString());
     }
 }
 public void DownloadFileTest()
 {
     try
     {
         using (var service = new FileCollectorServiceClient())
         {
             var id     = service.GetFiles().First().Id;
             var result = service.DownloadFile(id);
         }
         Assert.IsTrue(true);
     }
     catch (Exception e)
     {
         Assert.Fail(e.ToString());
     }
 }
 public void UploadFileTest()
 {
     try
     {
         using (var service = new FileCollectorServiceClient())
         {
             var result = service.UploadFile("Name " + Guid.NewGuid(), new DateTime(2000, 1, 1),
                                             Encoding.UTF8.GetBytes("Новый тест"));
         }
         Assert.IsTrue(true);
     }
     catch (Exception e)
     {
         Assert.Fail(e.ToString());
     }
 }
Exemple #6
0
        /// <summary>
        /// Асинхронный паттерн TAP.
        /// Обработчик файлов для вызова в асинхронной операции,
        /// отправляет их в хранилище и регистрирует все процессы, включая ошибки, в журнале приложений windows.
        /// </summary>
        /// <param name="fileInfo">Файл</param>
        /// <param name="eventLog">Журнал</param>
        internal static Task <bool> ProcessTaskAsync(FileInfo fileInfo, EventLog eventLog)
        {
            var taskCompletionSource = new TaskCompletionSource <bool>();

            var monitoringPath    = new DirectoryInfo(Settings.Default.MonitoringPath);
            var sizeErrorPath     = new DirectoryInfo(Settings.Default.SizeErrorPath);
            var uploadErrorPath   = new DirectoryInfo(Settings.Default.UploadErrorPath);
            var maxUploadFileSize = Settings.Default.MaxUploadFileSize;

            fileInfo.Refresh();

            if (fileInfo.Length <= maxUploadFileSize)
            {
                try
                {
                    eventLog.WriteEntry("Старт загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                    using (var service = new FileCollectorServiceClient())
                    {
                        byte[] data = File.ReadAllBytes(fileInfo.FullName);

                        service.UploadFile(fileInfo.Name, fileInfo.LastWriteTime, data);

                        eventLog.WriteEntry("Успешное завершение загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                        try
                        {
                            File.Delete(fileInfo.FullName);
                            eventLog.WriteEntry("Удаление после успешной загрузки файла " + fileInfo.Name, EventLogEntryType.Information);
                        }
                        catch (Exception e0)
                        {
                            eventLog.WriteEntry("Ошибка после успешной загрузки при удалении файла " + fileInfo.Name + ". Описание ошибки: " + e0, EventLogEntryType.Error);
                        }
                    }
                }
                catch (Exception e1)
                {
                    eventLog.WriteEntry("Старт перемещения файла по причине сбоя загрузки: " + fileInfo.Name + ". Описание ошибки: " + e1, EventLogEntryType.Error);
                    try
                    {
                        File.Move(fileInfo.FullName, uploadErrorPath.FullName + fileInfo.Name);
                        eventLog.WriteEntry("Завершение перемещения файла по причине сбоя загрузки: " + fileInfo.Name, EventLogEntryType.Information);
                    }
                    catch (Exception e2)
                    {
                        eventLog.WriteEntry("Ошибка при перемещении файла по причине сбоя загрузки: " + fileInfo.Name + fileInfo.Name + ". Описание ошибки: " + e2, EventLogEntryType.Error);
                    }
                }
            }
            else
            {
                eventLog.WriteEntry("Старт перемещения файла по причине превышения размера: " + fileInfo.Name, EventLogEntryType.Error);
                try
                {
                    File.Move(fileInfo.FullName, sizeErrorPath.FullName + fileInfo.Name);
                    eventLog.WriteEntry("Завершение перемещения файла по причине превышения размера: " + fileInfo.Name, EventLogEntryType.Information);
                }
                catch (Exception e3)
                {
                    eventLog.WriteEntry("Ошибка при перемещении файла по причине превышения размера: " + fileInfo.Name + fileInfo.Name + ". Описание ошибки: " + e3, EventLogEntryType.Error);
                }
            }

            taskCompletionSource.SetResult(true);

            return(taskCompletionSource.Task);
        }