public static UserFileItem ToUserFile(this IFormFile formFile, string name = null)
        {
            var    subfolder      = (DateTime.Now.Second % 60).ToString();
            string serverFileName = Guid.NewGuid().ToString() + ".ufile";
            string serverPath     = Path.Combine("upload", subfolder, serverFileName);


            FileStream fileToWrite = new FileStream(Path.Combine(HostingEnvironment.WebRootPath, serverPath), FileMode.Create, FileAccess.Write);

            formFile.CopyTo(fileToWrite);
            fileToWrite.Close();
            UserFileItem ufi = new UserFileItem()
            {
                ClientPath    = formFile.FileName,
                VersionNumber = 1,
                Status        = StatusType.OK,
                ContentType   = formFile.ContentType,
                FileName      = Path.GetFileName(formFile.FileName),
                ServerPath    = serverPath,
                Size          = formFile.Length,
                Type          = Path.GetExtension(formFile.FileName),
                Name          = name,
                CreationDate  = DateTime.Now,
            };

            return(ufi);
        }
        public UserFileListViewModel(UserFileItem t)
        {
            Id         = t.Id;
            FileName   = t.FileName;
            ServerPath = t.ServerPath;

            Name          = t.Name;
            Size          = t.Size;
            UploadDate    = t.CreationDate;
            DownloadCount = t.DownloadCount;
            Visibility    = t.Visibility;
        }
Exemple #3
0
        public async Task <IActionResult> OnGetAsync(long?id, string returnUrl)
        {
            if (id == null)
            {
                return(NotFound());
            }
            ReturnUrl = returnUrl;
            UserFile  = await _context.Files.SingleOrDefaultAsync(m => m.Id == id);

            if (UserFile == null)
            {
                return(NotFound());
            }
            return(Page());
        }
Exemple #4
0
        private async Task <long> SaveUserFile(long?fileId, IFormFile formFile, string name)
        {
            UserFileItem userFile = null;

            if (fileId != null)
            {
                userFile = _context.Files.FirstOrDefault(f => f.Id == fileId);
                string spath = Path.Combine(_hostingEnvironment.WebRootPath, "upload", userFile.ServerPath);
                System.IO.File.Move(spath, spath + ".deleted");
            }
            if (userFile == null)
            {
                userFile = new UserFileItem();
            }
            string serverFileName = Guid.NewGuid().ToString() + ".ufile";
            string serverPath     = Path.Combine(_hostingEnvironment.WebRootPath, "upload", serverFileName);

            FileStream fileToWrite = new FileStream(serverPath, FileMode.Create, FileAccess.Write);
            await formFile.CopyToAsync(fileToWrite);

            fileToWrite.Close();

            userFile.TownId  = GroupItem.TownId;
            userFile.GroupId = GroupItem.Id;

            userFile.Visibility  = VisibilityType.CurrentGroup;
            userFile.FileName    = Path.GetFileName(formFile?.FileName);
            userFile.ContentType = formFile?.ContentType;
            userFile.ServerPath  = serverFileName;
            userFile.ClientPath  = formFile?.FileName;
            userFile.Size        = formFile?.Length ?? 0;
            userFile.Name        = name;
            userFile.Type        = Path.GetExtension(formFile?.FileName);


            if (fileId != null)
            {
                _context.Attach(userFile).State = EntityState.Modified;
            }
            else
            {
                _context.Add(userFile);
            }
            await _context.SaveChangesAsync();

            return(userFile.Id);
        }
        public async Task <IActionResult> OnPostAsync()
        {
            if (!ModelState.IsValid)
            {
                return(Page());
            }

            try
            {
                var    subfolder      = (DateTime.Now.Second % 10).ToString();
                string serverFileName = Guid.NewGuid().ToString() + ".ufile";
                string serverPath     = Path.Combine(_hostingEnvironment.WebRootPath, "upload", subfolder, serverFileName);

                FileStream fileToWrite = new FileStream(serverPath, FileMode.Create, FileAccess.Write);
                await UserFile.UploadFile.CopyToAsync(fileToWrite);

                fileToWrite.Close();
                var ufile = new UserFileItem()
                {
                    TownId      = UserFile.TownId,
                    GroupId     = UserFile.GroupId,
                    Visibility  = UserFile.Visibility,
                    FileName    = Path.GetFileName(UserFile.UploadFile?.FileName),
                    ContentType = UserFile.UploadFile?.ContentType,
                    ServerPath  = Path.Combine("upload", subfolder, serverFileName),
                    ClientPath  = UserFile.UploadFile?.FileName,
                    Size        = UserFile.UploadFile?.Length ?? 0,
                    Name        = UserFile.Name,
                    Type        = Path.GetExtension(UserFile.UploadFile?.FileName),

                    CreationDate = DateTime.Now,
                };



                _context.Files.Add(ufile);
                await _context.SaveChangesAsync();

                return(Redirect(Url.GetLocalUrl(ReturnUrl)));
            }
            catch (Exception)
            {
                return(NotFound());
            }
        }
Exemple #6
0
        public async Task <IActionResult> OnPostAsync(long?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            UserFile = await _context.Files.FindAsync(id);

            if (UserFile != null)
            {
                UserFile.DeleteFromServer();
                UserFile.Status = StatusType.Deleted;
                await _context.SaveChangesAsync();
            }

            return(Redirect(Url.GetLocalUrl(ReturnUrl)));
        }
 public static string ToBase64String(this UserFileItem userFile, string waterMark = null)
 {
     if (userFile != null && userFile.Status == StatusType.OK && acceptableExt.Contains(userFile.Type))
     {
         using (var stream = File.OpenRead(Path.Combine(HostingEnvironment.WebRootPath, userFile.ServerPath)))
             using (MemoryStream ms = new MemoryStream())
             {
                 stream.CopyTo(ms);
                 if (string.IsNullOrWhiteSpace(waterMark))
                 {
                     return(Convert.ToBase64String(ms.ToArray()));
                 }
                 using (var outStream = WaterMark.Mark(ms, waterMark, HostingEnvironment.WebRootPath + "/fonts/AdobeHeitiStd-Regular.otf"))
                 {
                     return(Convert.ToBase64String(outStream.ToArray()));
                 }
             }
     }
     return("");
 }
        public static UserFileItem UpdateUserFile(this IFormFile uploadedFile, UserFileItem userFile, VehicleDbContext dbContext, VisibilityType visibility, string name = null, long?townId = null, long?groupId = null)
        {
            if (uploadedFile != null)
            {
                if (userFile != null)
                {
                    if (userFile?.Status == StatusType.OK)
                    {
                        userFile.DeleteFromServer();
                        userFile.Status = StatusType.Deleted;
                        dbContext.Entry(userFile).State = EntityState.Modified;
                    }
                }

                userFile            = uploadedFile.ToUserFile(name);
                userFile.GroupId    = groupId;
                userFile.TownId     = townId;
                userFile.Visibility = visibility;
                dbContext.Files.Add(userFile);
            }
            return(userFile);
        }
        public static void DeleteFromServer(this UserFileItem userFile)
        {
            if (userFile?.Status != StatusType.OK)
            {
                throw new ArgumentException($"{nameof(userFile)} 是无效文件,已删除,或不存在");
            }
            string spath        = Path.Combine(HostingEnvironment.WebRootPath, userFile.ServerPath);
            string recycledPath = Path.Combine(HostingEnvironment.WebRootPath, "trashes", Path.GetFileName(userFile.ServerPath));

            try
            {
                System.IO.File.Move(spath, recycledPath + ".deleted");
                using (var writer = File.CreateText(recycledPath + ".info"))
                {
                    var info = new
                    {
                        userFile.FileName,
                        userFile.ClientPath,
                        userFile.ServerPath,
                        userFile.Size,
                        userFile.Type,
                        userFile.DownloadCount,
                        userFile.Visibility,
                        userFile.TownId,
                        userFile.GroupId,
                        userFile.Id,
                        userFile.CreateBy,
                        userFile.CreationDate,
                        DeleteDate = DateTime.Now,
                    };
                    writer.Write(JsonConvert.SerializeObject(info));
                }
            }
            catch (IOException ex)
            {
            }
        }