コード例 #1
0
        public async Task <ActionResult <IList <FileResult> > > GetFiles()
        {
            var claims = HttpContext.User.Claims;
            var email  = claims.Where(c => c.Type == ClaimTypes.Name).FirstOrDefault().Value;
            var user   = await context.AppUsers.FirstOrDefaultAsync(u => u.Email == email);

            if (user == null)
            {
                return(BadRequest());
            }

            // Get all files from the DB
            var files = await context.Files
                        .Where(f => f.UserId == user.Id)
                        .ToListAsync();

            List <FileResult> toReturn = new List <FileResult>();

            foreach (var dbFile in files)
            {
                FileResult fileResult = new FileResult
                {
                    Id        = dbFile.Id,
                    FileName  = dbFile.FileName,
                    HashValue = Convert.ToBase64String(dbFile.HashValue),
                    Created   = dbFile.Created
                };

                toReturn.Add(fileResult);
            }

            return(toReturn);
        }
コード例 #2
0
        public async Task <ActionResult <FileResult> > GetFile(Guid id)
        {
            var file = await context.Files.FindAsync(id);

            if (file == null)
            {
                return(NotFound());
            }

            var claims = HttpContext.User.Claims;
            var email  = claims.Where(c => c.Type == ClaimTypes.Name).FirstOrDefault().Value;
            var user   = await context.AppUsers.FirstOrDefaultAsync(u => u.Email == email);

            if (file.UserId != user.Id)
            {
                return(Unauthorized());
            }

            //////////////////////
            // TODO: cuva se FilePath u bazi, koristi to!
            string clientFilesFolder = configuration.GetValue <string>("ClientFilesFolderPath");

            string userFolderPath = Path.Combine(clientFilesFolder, user.Id.ToString());

            if (!Directory.Exists(userFolderPath))
            {
                return(NotFound());
            }

            string filePath = Path.Combine(userFolderPath, file.Id.ToString());

            //////////////////////

            if (!System.IO.File.Exists(filePath))
            {
                return(NotFound());
            }

            byte[] fileBuffer;
            fileBuffer = await System.IO.File.ReadAllBytesAsync(filePath);

            // TODO: check if buffer is null

            FileResult fileResult = new FileResult
            {
                FileName  = file.FileName,
                HashValue = Convert.ToBase64String(file.HashValue),
                Content   = fileBuffer
            };

            return(fileResult);
        }