Example #1
0
        /// <summary>
        /// Сохранение файла
        /// </summary>
        /// <param name="stream"></param>
        /// <param name="fileName"></param>
        /// <param name="userIdentityid"></param>
        /// <returns></returns>
        private async Task <long> SaveFile(Stream stream, string fileName, int userIdentityid)
        {
            if (stream == null)
            {
                throw new Exception("Входной поток не определен");
            }

            //проверяем директорию на существование
            //в случае отсутствия - создаем
            if (!Directory.Exists(_fileStorage))
            {
                Directory.CreateDirectory(_fileStorage);
            }

            using (var context = new ApplicationDbContext())
            {
                var storedName = DateTime.Now.GetHashCode().ToString("x") + Path.GetExtension(fileName);

                //создаем сущность файла
                var exchangeFile = new ExchangeFile
                {
                    UserIdentityId = userIdentityid,
                    FileName       = fileName,
                    StoredName     = storedName,
                    StartTime      = DateTime.Now,
                    Progress       = 0.01m,
                    Organization   =
                        context.Employee.Where(x => x.ApplicationUser.Id == userIdentityid)
                        .Select(x => x.Organization)
                        .FirstOrDefault() ??
                        context.Abonent.Where(x => x.ApplicationUser.Id == userIdentityid)
                        .Select(x => x.Organization)
                        .FirstOrDefault()
                };
                context.ExchangeFiles.Add(exchangeFile);
                await context.SaveChangesAsync();

                //названием файла на сервере будет "идентификатор файла"."расширение файла" в БД
                //сохраняем файл в файловое хранилище
                using (
                    var outStream = new FileStream(Path.Combine(_fileStorage, storedName), FileMode.CreateNew,
                                                   FileAccess.Write))
                {
                    stream.CopyTo(outStream);
                    outStream.Flush();
                    outStream.Close();
                    stream.Close();
                    stream.Dispose();
                }

                return(exchangeFile.Id);
            }
        }
Example #2
0
        public errorCompositeType AddExchangeFile(ExchangeFileCompositeType tect)
        {
            errorCompositeType lstError = new errorCompositeType();

            try
            {
                ExchangeFile te = new ExchangeFile();
                te.InsertTaskExchange(tect);
                lstError.bError = true;
                lstError.sError = "";
                return(lstError);
            }
            catch (Exception ex)
            {
                lstError.bError = false;
                lstError.sError = ex.Message;
                return(lstError);
            }
        }