Exemplo n.º 1
0
        public virtual bool CloseCreateFile()
        {
            bool     result = false;
            UserInfo user   = SessionUtils.UserInfo;

            if (user != null && user.File.OpenType == FileOpenType.Write)
            {
                try
                {
                    TempFileDto tempDto = new TempFileDto()
                    {
                        Directory     = user.File.Directory,
                        Name          = user.File.Name,
                        Length        = user.File.Length,
                        CreationTime  = user.File.CreationTime,
                        LastWriteTime = user.File.LastWriteTime,
                        TempIndex     = user.File.Position,
                        TempName      = user.File.TempName
                    };

                    var tempFileRepository = this.GetRepository <ITempFileRepository>();
                    tempFileRepository.AddOrUpdate(tempDto);

                    string log = string.Format("关闭上传文件, Directory: {0}, Name: {1}, Length: {2}, Position: {3}, CreationTime: {4:yyyy-MM-dd HH:mm:ss}, LastWriteTime: {5:yyyy-MM-dd HH:mm:ss}", user.File.Directory, user.File.Name, user.File.Length, user.File.Position, user.File.CreationTime, user.File.LastWriteTime);
                    OptionLogService.Instance.Add(OptionLogType.CloseCreateFile, log);

                    result = true;
                }
                catch { }
                user.File.Dispose();
            }

            return(result);
        }
Exemplo n.º 2
0
        public virtual TempFileDto Get(string directory, string name)
        {
            TempFileDto vm = null;

            if (!string.IsNullOrEmpty(name))
            {
                directory = Utils.FormatDirectory(directory);
                name      = Utils.FormatName(name);

                using (var db = this.CreateDbContext())
                {
                    var query = from q in db.TempFile
                                where q.Directory == directory && q.Name == name
                                select new TempFileDto
                    {
                        Id            = q.Id,
                        Directory     = q.Directory,
                        Name          = q.Name,
                        Length        = q.Length,
                        CreationTime  = q.CreationTime,
                        LastWriteTime = q.LastWriteTime,
                        TempIndex     = q.TempIndex,
                        TempName      = q.TempName,
                        UpdateTime    = q.UpdateTime
                    };
                    vm = query.FirstOrDefault();
                }
            }

            return(vm);
        }
Exemplo n.º 3
0
        public virtual int AddOrUpdate(TempFileDto vm)
        {
            int count = 0;

            if (vm != null && !string.IsNullOrEmpty(vm.Name))
            {
                vm.Directory = Utils.FormatDirectory(vm.Directory);
                vm.Name      = Utils.FormatName(vm.Name);

                using (var db = this.CreateDbContext())
                {
                    db.Configuration.AutoDetectChangesEnabled = true;
                    using (db.BeginTransaction(System.Data.IsolationLevel.Serializable))
                    {
                        var m = db.TempFile.Where(q => q.Directory == vm.Directory && q.Name == vm.Name).FirstOrDefault();
                        if (m == null)
                        {
                            m = new TempFile();
                        }
                        m.Directory     = vm.Directory;
                        m.Name          = vm.Name;
                        m.Length        = vm.Length;
                        m.CreationTime  = vm.CreationTime;
                        m.LastWriteTime = vm.LastWriteTime;
                        m.TempIndex     = vm.TempIndex;
                        m.TempName      = vm.TempName;
                        m.UpdateTime    = DateTime.Now;
                        if (m.Id == 0)
                        {
                            db.TempFile.Add(m);
                        }
                        count += db.SaveChanges();
                        db.Commit();
                        vm.Id         = m.Id;
                        vm.UpdateTime = m.UpdateTime;
                    }
                }
            }

            return(count);
        }
Exemplo n.º 4
0
        public virtual bool CreateFile(CreateFileParamDto vm, out FileDataParamDto fileDataParam)
        {
            bool result = false;

            fileDataParam = null;
            UserInfo user = SessionUtils.UserInfo;

            if (user.File.OpenType == FileOpenType.None && !string.IsNullOrEmpty(vm.Name) &&
                vm.CreationTime != DateTime.MinValue && vm.LastWriteTime != DateTime.MinValue)
            {
                DateTime createtime = vm.CreationTime;
                DateTime lasttime   = vm.LastWriteTime;
                if (ConfigUtils.DatabaseType == DatabaseType.Oracle)
                {
                    createtime = DateTime.Parse(vm.CreationTime.ToString("yyyy-MM-dd HH:mm:ss"));
                    lasttime   = DateTime.Parse(vm.LastWriteTime.ToString("yyyy-MM-dd HH:mm:ss"));
                }
                string tempFullName = null;
                var    repository   = this.GetRepository <ITempFileRepository>();
                var    tempDto      = repository.Get(vm.Directory, vm.Name);
                if (tempDto == null || tempDto.Length == 0 || tempDto.Length != vm.Length ||
                    tempDto.CreationTime != createtime || tempDto.LastWriteTime != lasttime ||
                    !File.Exists(Utils.Combine(ConfigUtils.TempDirectory, tempDto.TempName)))
                {
                    if (tempDto != null)
                    {
                        repository.Delete(tempDto.Id);
                        tempFullName = Utils.Combine(ConfigUtils.TempDirectory, tempDto.TempName);
                        if (File.Exists(tempFullName))
                        {
                            try { File.Delete(tempFullName); }
                            catch { }
                        }
                    }

                    tempDto = new TempFileDto()
                    {
                        TempIndex = 0,
                        TempName  = Guid.NewGuid().ToString("n") + ".t"
                    };
                }

                FileStream fs = null;
                tempFullName = Utils.Combine(ConfigUtils.TempDirectory, tempDto.TempName);
                try
                {
                    if (File.Exists(tempFullName))
                    {
                        fs = File.OpenWrite(tempFullName);
                        if (tempDto.TempIndex > 0)
                        {
                            fs.Seek(tempDto.TempIndex, SeekOrigin.Begin);
                        }
                    }
                    else
                    {
                        if (!Directory.Exists(ConfigUtils.TempDirectory))
                        {
                            Directory.CreateDirectory(ConfigUtils.TempDirectory);
                        }
                        fs = File.Create(tempFullName);
                        if (vm.Length > 0)
                        {
                            fs.SetLength(vm.Length);
                        }
                    }

                    //FileInfoRepository.Instance.Delete(vm.Directory, vm.Name, (int)FileInfoType.File);
                    //string fullName = PathUtils.Combine(ConfigUtils.FileRootPath, user.File.Directory, user.File.Name);
                    //if (File.Exists(fullName)) File.Delete(fullName);

                    user.File.Directory     = vm.Directory;
                    user.File.Name          = vm.Name;
                    user.File.Length        = vm.Length;
                    user.File.CreationTime  = vm.CreationTime;
                    user.File.LastWriteTime = vm.LastWriteTime;
                    user.File.Position      = fs.Position;
                    user.File.TempName      = tempDto.TempName;
                    user.File.Stream        = fs;
                    user.File.OpenType      = FileOpenType.Write;

                    fileDataParam = new FileDataParamDto()
                    {
                        Index = user.File.Position,
                        Size  = ConfigUtils.MAX_FILE_DATA_SIZE
                    };
                    result = true;

                    string log = string.Format("创建上传文件, Directory: {0}, Name: {1}, Length: {2}, Position: {3}, CreationTime: {4:yyyy-MM-dd HH:mm:ss}, LastWriteTime: {5:yyyy-MM-dd HH:mm:ss}", user.File.Directory, user.File.Name, user.File.Length, user.File.Position, user.File.CreationTime, user.File.LastWriteTime);
                    new OptionLogService().Add(OptionLogType.CreateFile, log);
                }
                catch (Exception ex)
                {
                    try
                    {
                        if (fs != null)
                        {
                            fs.Close();
                        }
                        if (tempDto.Id == 0)
                        {
                            File.Delete(tempFullName);
                        }
                    }
                    catch { }
                    throw ex;
                }
            }

            return(result);
        }