public async Task <ActionResult> ShowFile(Guid id, bool download = false)
        {
            try
            {
                List <FilesModel> files = await new FilesFetcherHandler(_logger, _dbContext).GetFileList(id);
                FilesModel        file  = files[0];
                byte[]            bytes = Convert.FromBase64String(file.Content);

                FileContentResult result = new FileContentResult(bytes, file.ContentType)
                {
                    FileContents          = bytes,
                    EnableRangeProcessing = true,
                };

                if (download)
                {
                    result.FileDownloadName = file.FileName;
                }

                return(result);
            }
            catch (Exception e)
            {
                _logger.LogError(e, e.Message, e);
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #2
0
        public JsonResult Save(FilesModel model)
        {
            if (!CheckPoint.Instance.GrantEditImplementationGuide(model.Id))
            {
                throw new AuthorizationException("You do not have access to edit this implementation guide's files.");
            }

            foreach (FileModel fileModel in model.Files)
            {
                if (fileModel.IsRemoved)
                {
                    RemoveFile(fileModel);
                }
                else if (fileModel.FileId != null)
                {
                    UpdateFile(fileModel);
                }
                else
                {
                    AddFile(model.Id, fileModel);
                }

                this.tdb.SaveChanges();
            }

            return(Json(new { }));
        }
        public ActionResult Index()
        {
            DirectoryInfo d = new DirectoryInfo(Server.MapPath("~/Files/Template"));

            FileInfo[] Files = d.GetFiles("*");

            List <FilesModel> filesList = new List <FilesModel>();

            foreach (var a in Files)
            {
                var path = Path.Combine(Server.MapPath("~/Files/Template"), a.Name);
                if (System.IO.File.Exists(path))
                {
                    var f = new FilesModel()
                    {
                        Name      = Path.GetFileNameWithoutExtension(path),
                        FileName  = a.Name,
                        Extension = a.Extension
                    };

                    filesList.Add(f);
                }
            }

            return(View(filesList));
        }
Beispiel #4
0
 //this ctor is used when creating new item of known type
 public FileNode(FilesModel model, string name, EFileType type)
 {
     _model = model;
     _type  = type;
     _SetName(name);
     _id = _model.AddGetId(this);
 }
        /// <summary>
        /// Method to upload files
        /// </summary>
        /// <param name="files"></param>
        /// <returns></returns>
        public async Task <ResponseModel> UploadFiles(List <IFormFile> files)
        {
            try
            {
                foreach (var f in files)
                {
                    using (var memoryStream = new MemoryStream())
                    {
                        await f.CopyToAsync(memoryStream);

                        FilesModel file = new FilesModel
                        {
                            Content     = Convert.ToBase64String(memoryStream.ToArray()),
                            FileName    = f.FileName,
                            ContentType = f.ContentType,
                        };
                        await _dbContext.Files.AddAsync(file);

                        await _dbContext.SaveChangesAsync();
                    }
                    return(new ResponseModel(true));
                }

                return(new ResponseModel(false)
                {
                    Message = "Couldn't upload"
                });
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #6
0
 public bool AddDE(FilesModel model)
 {
     if (DataContext.DigitalEvidences.Any(x => x.WID == model.WID))
     {
         var file = DataContext.DigitalEvidences.Where(x => x.WID == model.WID).FirstOrDefault();
         file.FileData      = model.FileData;
         file.FileDataEnc   = model.FileDataEnc;
         file.FileName      = model.FileName;
         file.FileExtension = model.FileExtension;
     }
     else
     {
         var record = new DigitalEvidence()
         {
             WID             = model.WID,
             FileData        = model.FileData,
             FileDataEnc     = model.FileDataEnc,
             FileName        = model.FileName,
             FileExtension   = model.FileExtension,
             FileHashedValue = model.FileHashedValue
         };
         DataContext.DigitalEvidences.Add(record);
     }
     return(DataContext.SaveChanges() > 0);
 }
Beispiel #7
0
        public async Task CanInsertInDatabase_Ok()
        {
            try
            {
                Setup();

                var sevenItems   = new byte[] { 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20 };
                var bytes        = new byte[64493];
                var base64String = Convert.ToBase64String(sevenItems);
                var file         = new FilesModel()
                {
                    Content     = base64String,
                    FileName    = "test",
                    ContentType = "application/json"
                };
                await _dbContext.Files.AddAsync(file);

                await _dbContext.SaveChangesAsync();

                Assert.Pass();
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }
Beispiel #8
0
        /// <summary>
        /// 儲存圖片
        /// </summary>
        /// <param name="model"></param>
        public void SaveFiles(FilesModel model)
        {
            if (model.ID > 0)
            {
                List <FILEBASE> filterRemove = new List <FILEBASE>();
                if (model.UploadIdentify == FileUploadType.NOTSET)
                {
                    filterRemove = this.DB.FILEBASE
                                   .Where(o => !model.OldFileIds.Contains(o.ID) &&
                                          o.MAP_ID == model.ID &&
                                          o.MAP_SITE == model.ActionName &&
                                          o.FILE_TP == "F"
                                          ).ToList();
                }
                else
                {
                    filterRemove = this.DB.FILEBASE
                                   .Where(o => !model.OldFileIds.Contains(o.ID) &&
                                          o.MAP_ID == model.ID &&
                                          o.MAP_SITE == model.ActionName &&
                                          o.FILE_TP == "F" &&
                                          o.IDENTIFY_KEY == (int)model.UploadIdentify
                                          ).ToList();
                }

                if (filterRemove.Count > 0)
                {
                    foreach (var f in filterRemove)
                    {
                        File.Delete(string.Concat(rootPath, f.FILE_PATH));
                    }
                    //刪除舊檔
                    this.DB.FILEBASE.RemoveRange(filterRemove);
                    this.DB.SaveChanges();
                }
            }

            //存檔多筆
            foreach (var f in model.MemberDataMultiple)
            {
                int      sq   = model.MemberDataMultiple.IndexOf(f) + 1;
                FILEBASE file = new FILEBASE()
                {
                    FILE_RANDOM_NM = f.FileName,
                    MAP_SITE       = model.ActionName,
                    SQ             = sq,
                    BUD_DT         = DateTime.UtcNow.AddHours(8),
                    BUD_ID         = UserProvider.Instance.User.ID,
                    MAP_ID         = model.ID,
                    FILE_REL_NM    = f.RealFileName,
                    FILE_TP        = "F",
                    FILE_PATH      = f.FilePath,
                    URL_PATH       = f.FileUrl,
                    IDENTIFY_KEY   = model.UploadIdentify == FileUploadType.NOTSET ? default(int?) : (int)model.UploadIdentify,
                };
                this.DB.FILEBASE.Add(file);
                this.DB.SaveChanges();
                f.ID = file.ID;
            }
        }
Beispiel #9
0
        public static FilesModel LoadCsvHeaderAndFillLoaderModel(HttpPostedFileBase file)
        {
            var filesModel = new FilesModel();
            var stream     = file.InputStream;
            var reader     = new StreamReader(stream);

            var headerLine = reader.ReadLine();

            if (headerLine == null)
            {
                return(null);
            }

            var headers = headerLine.Split(',', ';');

            filesModel.Header = "";
            foreach (var column in headers)
            {
                filesModel.Header = String.Concat(filesModel.Header, "\n", column);
            }
            filesModel.Header   = filesModel.Header.Trim();
            filesModel.FileName = file.FileName;

            return(filesModel);
        }
Beispiel #10
0
        /// <summary>
        /// 上傳檔案
        /// </summary>
        /// <param name="vm"></param>
        /// <param name="myFile"></param>
        public void UploadFile(FilesModel vm, List <HttpPostedFileBase> files, int identityId, string siteName)
        {
            string serverMapPath = @"/Content/Upload/Manage/Files/" + siteName + "/" + identityId + @"/";


            if (files != null && files.Count > 0)
            {
                for (int i = 0; i < files.Count; i++)
                {
                    string   strFileName  = Guid.NewGuid().ToString() + Path.GetExtension(files[i].FileName);
                    string   strFilePath  = HttpContext.Current.Server.MapPath(serverMapPath + strFileName);
                    string   realFileName = files[i].FileName;
                    string[] dirAry       = new string[] { "Content", "Upload", "Manage", "Files", siteName, identityId.ToString() };
                    PublicMethodRepository.CreateDir(dirAry);
                    files[i].SaveAs(strFilePath);

                    #region data binding to model

                    vm.MemberDataMultiple.Add(new FileViewModel()
                    {
                        RealFileName = realFileName,
                        FilePath     = strFilePath.Replace(rootPath, ""),
                        FileName     = strFileName,
                        FileUrl      = serverMapPath.Substring(1, serverMapPath.Length - 1) + strFileName,
                    });

                    #endregion data binding to model
                }
            }
        }
Beispiel #11
0
    //currently not used
    //this ctor is used when creating new item of known type
    //public FileNode(FilesModel model, string name, EFileType type, string linkTarget = null)
    //{
    //	_model = model;
    //	_type = type;
    //	_name = name;
    //	_id = _model.AddGetId(this);
    //	_CtorMisc(linkTarget);
    //}

    //this ctor is used when creating new item, importing items from files etc.
    //name is filename with extension.
    //sourcePath is used when need to get file text to detect type.
    //template used when creating new item, to detect item type.
    public FileNode(FilesModel model, string name, string sourcePath, bool isFolder, string linkTarget = null, string template = null)
    {
        //detect file type
        EFileType type;

        if (isFolder)
        {
            type = EFileType.Folder;
        }
        else if (template == "Script.cs")
        {
            type = EFileType.Script;
        }
        else if (template == "Class.cs" || template == "Partial.cs")
        {
            type = EFileType.Class;
        }
        else
        {
            type = DetectFileType(sourcePath);
        }

        _model = model;
        _type  = type;
        _name  = name;
        _id    = _model.AddGetId(this);
        _CtorMisc(linkTarget);
    }
Beispiel #12
0
        public IActionResult DeleteFile([FromBody] DeleteModel deleteModel)
        {
            try
            {
                string path = Path.Combine(_webHostEnvironment.WebRootPath, "UploadedFiles/" + deleteModel.FileName);

                System.IO.File.SetAttributes(path, FileAttributes.Normal);
                System.IO.File.Delete(path);

                var model = new FilesModel
                {
                    SystemFileNames = GetLocalFiles()
                };

                return(Json(model));
            }
            catch (Exception e)
            {
                var model = new FilesModel
                {
                    SystemFileNames = GetLocalFiles(),
                    Message         = $"Error occured whilst attempting to delete file!\nError details: {e.Message}"
                };

                return(Json(model));
            }
        }
Beispiel #13
0
	public void ZUnloadOnFormClosed()
	{
		if(_model == null) return;
		_model.Save.AllNowIfNeed();
		var oldModel = _model;
		Program.Model = _model = null;
		oldModel.Dispose();
	}
Beispiel #14
0
 public Model(Stream stream, string m3uPath, LogEacFormat log) : base(m3uPath)
 {
     base._data = Data = new M3uFormat(this, stream, m3uPath);
     foreach (var track in log.Tracks.Items)
     {
         FilesModel.Add(track.Match.Name);
     }
 }
Beispiel #15
0
	//protected override void OnGotFocus(EventArgs e) { _c.Focus(); }

	/// <summary>
	/// Loads existing or new workspace.
	/// If fails, shows a task dialog with several choices - retry, load another, create new, cancel. If then fails, ends process.
	/// Sets Model and Text properties of the main form. Updates recent files.
	/// By default runs startup script.
	/// </summary>
	/// <param name="wsDir">
	/// Workspace's directory. The directory should contain file "files.xml" and subdirectory "files".
	/// If null, loads the last used workspace (its path is in settings).
	/// If the setting does not exist, uses AFolders.ThisAppDocuments + @"Main".
	/// If the file does not exist, copies from AFolders.ThisApp + @"Default\Workspace".
	/// </param>
	public FilesModel ZLoadWorkspace(string wsDir = null)
	{
		wsDir ??= Program.Settings.workspace;
		if(wsDir.NE()) wsDir = AFolders.ThisAppDocuments + "Main";
		var xmlFile = wsDir + @"\files.xml";
		var oldModel = _model;
		FilesModel m = null;
		_isNewWorkspace = false;
		g1:
		try {
			//SHOULDDO: if editor runs as admin, the workspace directory should be write-protected from non-admin processes.

			if(_isNewWorkspace = !AFile.ExistsAsFile(xmlFile)) {
				AFile.Copy(AFolders.ThisAppBS + @"Default\Workspace", wsDir);
			}

			_model?.UnloadingWorkspace(); //saves all, closes documents, sets current file = null

			m = new FilesModel(_c, xmlFile);
			_c.Model = m;
		}
		catch(Exception ex) {
			m?.Dispose();
			m = null;
			//AOutput.Write($"Failed to load '{wsDir}'. {ex.Message}");
			switch(ADialog.ShowError("Failed to load workspace", wsDir,
				"1 Retry|2 Load another|3 Create new|0 Cancel",
				owner: this, expandedText: ex.ToString())) {
			case 1: goto g1;
			case 2: m = ZLoadAnotherWorkspace(); break;
			case 3: m = ZLoadNewWorkspace(); break;
			}
			if(m != null) return m;
			if(_model != null) return _model;
			Environment.Exit(1);
		}

		oldModel?.Dispose();
		Program.Model = _model = m;

		//CONSIDER: unexpand path
		if(wsDir != Program.Settings.workspace) {
			if(Program.Settings.workspace != null) {
				var ar = Program.Settings.recentWS ?? Array.Empty<string>();
				int i = Array.IndexOf(ar, wsDir); if(i >= 0) ar = ar.RemoveAt(i);
				Program.Settings.recentWS = ar.InsertAt(0, Program.Settings.workspace);
			}
			Program.Settings.workspace = wsDir;
		}

		Program.MainForm.ZSetTitle();
		if(Program.Loaded >= EProgramState.LoadedWorkspace) {
			ZOpenDocuments();
			ZModel.RunStartupScripts();
		}

		return _model;
	}
Beispiel #16
0
        public async Task <IActionResult> UploadFile(IFormFile file)
        {
            var model = new FilesModel {
                SystemFileNames = GetLocalFiles()
            };

            if (file != null && file.Length > 0)
            {
                string fileExtension = Path.GetExtension(file.FileName);

                if (!file.ContentType.Equals("image/png") && !file.ContentType.Equals("image/jpeg"))
                {
                    model.Message = "Please upload a valid file format!";
                    return(Json(model));
                }

                if (file.Length > _fileSizeLimit)
                {
                    model.Message = "File should be less than 4MB in size!";
                    return(Json(model));
                }

                // extract only the filename and add a unique GUID
                var fileName = Guid.NewGuid() + Path.GetFileName(file.FileName);
                fileName = fileName.Replace("-", "_");
                string path = Path.Combine(_webHostEnvironment.WebRootPath, "UploadedFiles/" + fileName);

                if (model.SystemFileNames.Any(x => x.Substring(36) == file.FileName))
                {
                    model.Message = "File already exists on server!";
                    return(Json(model));
                }
                else
                {
                    try
                    {
                        using (var fileStream = new FileStream(path, FileMode.Create))
                        {
                            await file.CopyToAsync(fileStream);
                        }

                        model.SystemFileNames = GetLocalFiles();
                        return(Json(model));
                    }
                    catch (Exception e)
                    {
                        model.Message = $"Error occured whilst attempting to upload file!\nError details: {e.Message}";
                        return(Json(model));
                    }
                }
            }
            else
            {
                model.Message = "Please select a file to upload!";
                return(Json(model));
            }
        }
Beispiel #17
0
    //this ctor is used when reading files.xml
    FileNode(XmlReader x, FileNode parent, FilesModel model)
    {
        _model = model;
        if (parent == null)          //the root node
        {
            if (x.Name != "files")
            {
                throw new ArgumentException("XML root element name must be 'files'");
            }
            x["max-i"].ToInt(out uint u);
            _model.MaxId = u;
        }
        else
        {
            _type = x.Name switch
            {
                "d" => EFileType.Folder,
                "s" => EFileType.Script,
                "c" => EFileType.Class,
                "n" => EFileType.NotCodeFile,
                _ => throw new ArgumentException("XML element name must be 'd', 's', 'c' or 'n'"),
            };
            uint id = 0, testScriptId = 0; string linkTarget = null, icon = null;
            while (x.MoveToNextAttribute())
            {
                var v = x.Value;
                switch (x.Name)
                {
                case "n": _name = v; break;

                case "i": v.ToInt(out id); break;

                case "f": _flags = (_Flags)v.ToInt(); break;

                case "path": linkTarget = v; break;

                case "icon": icon = v; break;

                case "run": v.ToInt(out testScriptId); break;
                }
            }
            if (_name.NE())
            {
                throw new ArgumentException("no 'n' attribute in XML");
            }
            _id = _model.AddGetId(this, id);
            _CtorMisc(linkTarget);
            if (icon != null && linkTarget == null)
            {
                _iconOrLinkTarget = icon;
            }
            if (testScriptId != 0)
            {
                _testScriptId = testScriptId;
            }
        }
    }
Beispiel #18
0
        public IActionResult GetFiles()
        {
            var model = new FilesModel
            {
                SystemFileNames = GetLocalFiles()
            };

            return(Json(model));
        }
Beispiel #19
0
            public override void CalcHashes(Hashes hashFlags, Validations validationFlags)
            {
                if (base.Data.Issues.HasFatal)
                {
                    return;
                }

                if ((validationFlags & Validations.Exists) != 0)
                {
                    Data.MissingCount = 0;
                    if (Data.Files.Items.Count != 1 || Data.Files.Items[0].Name != Data.IgnoredName)
                    {
                        for (int ix = 0; ix < Data.Files.Items.Count; ++ix)
                        {
                            FileItem item = Data.Files.Items[ix];
                            var      name = item.Name;

                            if (Data.AllowNonFile && (name.StartsWith("http:") || name.StartsWith("https:")))
                            {
                                IssueModel.Add($"Ignoring URL '{name}'.", Severity.Trivia);
                            }
                            else
                            {
                                try
                                {
                                    if (!System.IO.Path.IsPathRooted(name))
                                    {
                                        name = Data.Files.RootDir + System.IO.Path.DirectorySeparatorChar + name;
                                    }
                                    else if (Data.ForbidRooted)
                                    {
                                        IssueModel.Add($"File is rooted: '{item.Name}'.");
                                    }
                                }
                                catch (ArgumentException ex)
                                {
                                    IssueModel.Add($"Malformed file name '{name}': {ex.Message}");
                                    FilesModel.SetIsFound(ix, false);
                                    ++Data.MissingCount;
                                    continue;
                                }

                                // Exists doesn't seem to throw any exceptions, so no try/catch.
                                bool isFound = File.Exists(name);
                                FilesModel.SetIsFound(ix, isFound);
                                if (!isFound)
                                {
                                    IssueModel.Add($"File '{item.Name}' not found.", Severity.Advisory);
                                    ++Data.MissingCount;
                                }
                            }
                        }
                    }
                }

                base.CalcHashes(hashFlags, validationFlags);
            }
Beispiel #20
0
 //this ctor is used when copying or importing a workspace.
 //Deep-copies fields from f, except _model, _name, _id (generates new) and _testScriptId.
 FileNode(FilesModel model, FileNode f, string name)
 {
     _model            = model;
     _name             = name;
     _type             = f._type;
     _state            = f._state;
     _flags            = f._flags;
     _iconOrLinkTarget = f._iconOrLinkTarget;
     _id = _model.AddGetId(this);
 }
Beispiel #21
0
        public static XCompiled OfWorkspace(FilesModel m)
        {
            var cc = m.CompilerContext;

            if (cc == null)
            {
                m.CompilerContext = cc = new XCompiled(m);
            }
            return(cc as XCompiled);
        }
Beispiel #22
0
            public static XCompiled OfCollection(FilesModel coll)
            {
                var cc = coll.CompilerContext;

                if (cc == null)
                {
                    coll.CompilerContext = cc = new XCompiled(coll);
                }
                return(cc as XCompiled);
            }
Beispiel #23
0
        public IActionResult Index(string partName)
        {
            var model = new FilesModel();

            if (string.IsNullOrEmpty(partName))
            {
                model.ErrorMesage = "No part selected";
            }
            return(View(model));
        }
Beispiel #24
0
        public void Dispose()
        {
            _model       = null;
            App.Timer1s -= _Program_Timer1s;

            //must be all saved or unchanged
            Debug.Assert(_workspaceAfterS == 0);
            Debug.Assert(_stateAfterS == 0);
            Debug.Assert(_textAfterS == 0);
        }
Beispiel #25
0
 private void DownloadFile()
 {
     if (files.Name != String.Empty)
     {
         var model = _file.Load();
         var files = new FilesModel();
         files.Name     = model.Name;
         files.Progress = model.Progress;
         ConvertList.Add(files);
     }
 }
Beispiel #26
0
 //this ctor is used when importing items from files etc.
 //name is filename with extension.
 //sourcePath is used to get file text to detect type when !isFolder.
 public FileNode(FilesModel model, string name, string sourcePath, bool isFolder, string linkTarget = null)
 {
     _model = model;
     _type  = isFolder ? EFileType.Folder : _DetectFileType(sourcePath);
     _SetName(name);
     _id = _model.AddGetId(this);
     if (!linkTarget.NE() && !isFolder)
     {
         _linkTarget = linkTarget;
     }
 }
Beispiel #27
0
 //this ctor is used when copying or importing a workspace.
 //Deep-copies fields from f, except _model, _name, _id (generates new) and _testScriptId.
 FileNode(FilesModel model, FileNode f, string name)
 {
     _model = model;
     _SetName(name);
     _type       = f._type;
     _state      = f._state;
     _flags      = f._flags;
     _linkTarget = f._linkTarget;
     _icon       = f.CustomIconName;
     _id         = _model.AddGetId(this);
 }
Beispiel #28
0
        public void Dispose()
        {
            _model           = null;
            Program.Timer1s -= _Program_Timer1s;
            Program.MainForm.VisibleChanged -= _MainForm_VisibleChanged;

            //must be all saved or unchanged
            Debug.Assert(_workspaceAfterS == 0);
            Debug.Assert(_stateAfterS == 0);
            Debug.Assert(_textAfterS == 0);
        }
Beispiel #29
0
 public bool AddDE(FilesModel model)
 {
     if (DataContext.DigitalEvidences.Any(x => x.WID == model.WID))
     {
         var file = DataContext.DigitalEvidences.Where(x => x.WID == model.WID).FirstOrDefault();
         file.FileData      = model.FileData;
         file.FileDataEnc   = model.FileDataEnc;
         file.FileName      = model.FileName;
         file.FileExtension = model.FileExtension;
     }
     return(DataContext.SaveChanges() > 0);
 }
Beispiel #30
0
        public IList <ValidationFailure> Validate(IFormFileCollection files)
        {
            FilesModelValidator validator  = new FilesModelValidator();
            FilesModel          filesModel = new FilesModel();

            foreach (var file in files)
            {
                filesModel.Files.Add(file);
            }
            ValidationResult result = validator.Validate(filesModel);

            return(result.Errors);
        }