示例#1
0
        public Guid Upload(String fileLabel)
        {
            var user = _userSvc.CurrentUser();

            Repos.File file          = _files.GetByIdUserAndLabel(user.Id, HttpContext.Current.Request.Files["file"].FileName);
            var        encriptionKey = HttpContext.Current.Request.Params["encryptionKey"];

            using (var fileUploadStream = HttpContext.Current.Request.Files["file"].InputStream)
            {
                using (var ms = new MemoryStream())
                {
                    fileUploadStream.CopyTo(ms);
                    var data = ms.ToArray();

                    var strData = Encoding.UTF8.GetString(data);
                    var crys    = new CryptoService();
                    var root    = crys.Initialize(strData);

                    strData = crys.Save();

                    var encrypted = Encoding.UTF8.GetBytes(_crypt.Encrypt(strData, encriptionKey));
                    if (file == null)
                    {
                        file = new Repos.File
                        {
                            Id      = Guid.NewGuid(),
                            Label   = fileLabel,
                            Name    = HttpContext.Current.Request.Files["file"].FileName,
                            UserId  = user.Id,
                            Content = encrypted
                        };
                        _files.Add(file);
                    }
                    else
                    {
                        file.Content = encrypted;
                        _files.Update(file);
                    }
                    _attach.DeleteFile(file.Id);
                    foreach (var singleFile in root.Attachments)
                    {
                        //_attach.DeleteFile(Guid.Parse(singleFile.Id));
                        var toAdd = new Attach {
                            Id     = Guid.Parse(singleFile.Id),
                            UserId = user.Id,
                            FileId = file.Id,
                            Name   = file.Name,
                            Data   = singleFile.Data
                        };
                        _attach.Add(toAdd);
                    }
                    return(file.Id);
                }
            }
        }
示例#2
0
        public Guid CreateNew(LoadFileModel model)
        {
            if (!model.FileName.ToLowerInvariant().EndsWith(".xml"))
            {
                model.FileName += ".xml";
            }

            var user = _userSvc.CurrentUser();

            Repos.File file          = _files.GetByIdUserAndLabel(user.Id, model.FileName);
            var        encriptionKey = model.FileKey;

            var crys  = new CryptoService();
            var empty = crys.Empty;
            var root  = crys.Initialize(empty);

            var strData   = crys.Save();
            var encrypted = Encoding.UTF8.GetBytes(_crypt.Encrypt(strData, encriptionKey));

            if (file == null)
            {
                file = new Repos.File
                {
                    Id      = Guid.NewGuid(),
                    Label   = model.FileLabel,
                    Name    = model.FileName,
                    UserId  = user.Id,
                    Content = encrypted
                };
                _files.Add(file);
            }
            else
            {
                file.Content = encrypted;
                _files.Update(file);
            }
            _attach.DeleteFile(file.Id);
            foreach (var singleFile in root.Attachments)
            {
                //_attach.DeleteFile(Guid.Parse(singleFile.Id));
                var toAdd = new Attach
                {
                    Id     = Guid.Parse(singleFile.Id),
                    UserId = user.Id,
                    FileId = file.Id,
                    Name   = file.Name,
                    Data   = singleFile.Data
                };
                _attach.Add(toAdd);
            }
            return(file.Id);
        }