webForumDet fria alternativet

Serverside Filebrowser

1 svar · 534 visningar · startad av Gildebrand

GildebrandMedlem sedan juni 2009920 inlägg
#1

Hallåj!

Jag skulle vilja skapa en file-browser, i en ASP.Net sida. Mapparna och filerna som jag vill visa och browsa i ligger på en filserver, som inte är samma som webbservern. Går det här att lösa på något fint sätt? Det ska gå fort också att logga in till nätverksresursen där filerna finns.

hopparnMedlem sedan nov. 20011 551 inlägg
#2

Ja det är inga problem. Jag har byggt en sådan fast för ett EPiserver intranät.
Jag gjorde det enkelt och band till en listview. Jag hade också lite ikoner etc men jag tror koden nedan får dig på rätt spår :)

Tilläggas bör att jag hade sökvägen som en prop i EPitemplaten så att administratören kunde skapa en ny sida med sökväg till den huvudfolder på filservern som tänkta användare skulle få se.

Lite exempel :)

public string FilePath { get; set; }

		private string[] CurrentPath{
			get { return (string[]) (ViewState["CurrentPath"]); }
			set { ViewState["CurrentPath"] = value; }
		}

		private void Page_Load(object sender, System.EventArgs e)
		{
			if (!IsPostBack)
			{
				this.CurrentPath = new string[]{};
				ShowDirectory();
			}

		}

		private string GetCurrentPath(){
			string folder = this.FilePath;
			foreach (string part in this.CurrentPath)
				folder = Path.Combine(folder, part);
			return folder;
		}
		private void ShowDirectory(){
			WindowsImpersonationContext impersonationContext = ((WindowsIdentity)Page.User.Identity).Impersonate();
			string folder = GetCurrentPath();

			var dirInfo = new DirectoryInfo(folder);
			lvFolders.DataSource = dirInfo.GetDirectories();
			lvFolders.DataBind();

			lvFiles.DataSource = dirInfo.GetFiles();
			lvFiles.DataBind();

			ibUp.Visible = this.CurrentPath.Length > 0;
			impersonationContext.Undo();
		}
protected void DoGoToFolder(object sender, CommandEventArgs e){
			this.CurrentPath = this.CurrentPath.Concat(new[]{e.CommandArgument.ToString()}).ToArray();
			ShowDirectory();
		}
protected void DoBrowseUp(object sender, EventArgs e){
			this.CurrentPath = this.CurrentPath.Take(this.CurrentPath.Length - 1).ToArray();
			ShowDirectory();
		}
124 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
122 ms — hämta tråd, inlägg och bilagor (db)