Archief - ASP.NET: Bestanden/Directory openen (client side)

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

NoFate

Legacy Member
Hello

Ik ben een asp pagina aan het creeren.
Ik heb volgende code gebruikt voor het openen van directorys...


directory
Code:
 Shell("explorer.exe " & directory, vbMaximizedFocus)

Maar natuurlijk werkt dit niet meer via clientside

Alle explorers worden geopend op de server :)

Hoe los ik dit op?

Bedankt!

Radiance

Legacy Member
Als jij vanop uw webservertje programma's zou kunnen starten op mijne pc, zou u dat ook niet een beetje zeer gevaarlijk lijken? ;)

Hoe je dat juist doet in asp weet k niet, maar zo'n file upload gedoen maak je in html met :
PHP:
<input type="file" />

Rvl

Legacy Member
alé we zullen de basis is gaan uitleggen.
javascript = client side
php & asp.net = server side
De reden waarom asp.net een server side scripttaal is zal zo wel zijn redenen hebben :unsure:

NoFate

Legacy Member
Ok

Ik heb dus een tabel waar in 1 kolom enkele locaties staan bv:

C:\
d:\my documents
\\server01\documenten

Nu wil ik dat de gebruiker daar bv op kan klikken en dat hij dan op die locatie terecht komt

EDIT : <a href="file:///D:/temp">mapje</a>
Dat werkt dus al , maar ik krijg dit niet aan het werken voor mappen op een andere pc , bv : \\pc01\documenten

Iemand enig idee hoe ik dit doe?

Rvl

Legacy Member
en dat zal u ook waarschijnlijk niet gaan lukken (lees eerste replay van radiance)

NoFate

Legacy Member
ik wil geen programma openen he , ik wil gewoon een directory structuur laten zien...

<a href="file:///D:/temp">mapje</a>
Dat werkt , maar nu zou ik ook graag willen linken naar een andere map op een andere pc...
"\\pc01\c" ipv "c:\"

grtz

Rvl

Legacy Member
Dan zou je de hele directory structuur van users moeten kunnen doornemen. Dan heb je ook nog het probleem met andere benamingen engels / frans / ... andere os etc. Verder kun je (in hoeverre ik weet) nooit rechtstreeks in de mapstructuur van clients gaan snuffelen zonder zei dat willen.
Wat is trouwens het nut van mappen te laten zien in een kolom? Tzal imo voor een of ander nutteloos effectje te krijgen zijn op u website. De oplossing is gewoon <input type="file" /> te zetten en ze zelf laten zoeken

NoFate

Legacy Member
jama , ik wil geen bestanden uploaden..

Het zit zo

Ik heb een tabel waarin info staat.
Dan heb ik ook nog een kolom waar ik een directory in wil zetten.
Dan zeg ik tegen de user : In deze directory kan je nog meer informatie bekomen over xxx.
En in die directory staan dus allemaal bestanden die betrekking hebben over deze info. In deze directory staan dan pdf, jpegs,...

Dus dan moeten ze alleen maar klikken op de link en dan komen ze direct in die dir uit...

Ik hoop dat je begrijpt wat ik bedoel

dJeez

Legacy Member
Of het online zal werken heb ik zo mijn twijfels over, maar de URL moet dan de volgende vorm hebben : file://///pcnaam/sharenaam/

Obliv`

Legacy Member
Kheb even geleden zowat een klein scriptje geschreven om de inhoud van een bepaalde dir op de server te listen.

index.asp
Code:
<script language="javascript" type="text/javascript">
function showFolder(objFolder)
{
	if (document.getElementById(objFolder).style.display == "none") 
	{
		document.getElementById(objFolder).style.display = "block";
	}
	else
	{
		document.getElementById(objFolder).style.display = "none";
	}
}
</script>

<%
	Dim intFolderID
	
	Function GetUrl(strPath)
		Dim strUrl
		
		strUrl = Right(strPath, Len(strPath) - Len(Server.MapPath("/")))
		strUrl = Replace(strUrl, "\", "/")
		
		GetUrl = strUrl
	End function
	
	Sub ListFolder(objFolder)
		Response.Write("<b>" & objFolder.Name & "</b>")
		Response.Write("<ul>")
		Response.Write("<li>Subfolders: " & objFolder.SubFolders.Count & "</li>")
		Response.Write("<li>Files: " & objFolder.Files.Count & "</li>")
		Response.Write("<li>Total size: " & Round((objFolder.Size / 1024), 2) & " kilobytes</li>")
		Response.Write("</ul>")
	End Sub
	
	Sub ListSubFolders(objFolder)
		Dim objSubFolder
		
		For Each objSubFolder in objFolder.SubFolders
			intFolderID = intFolderID + 1
			
			Response.Write("<li><a href=""javascript: showFolder('" & intFolderID & "');"">" & objSubFolder.Name & "</a> - " & Round((objSubFolder.Size / 1024), 2) & " kilobytes</li>")
			
			Response.Write("<ul id=""" & intFolderID & """ style=""display: none;"">")
			ListSubFolders(objSubFolder)
			ListFiles(objSubFolder)
			Response.Write("</ul>")
		Next
		
		Set objSubFolder = Nothing
	End Sub
	
	Sub ListFiles(objFolder)
		Dim objFile
		
		For Each objFile In objFolder.Files
			Response.Write("<li><a href=""" & GetURL(objFile.Path) & """>" & objFile.Name & "</a> - " & Round((objFile.Size / 1024), 2) & " kilobytes</li>")
		Next
		
		Set objFile = Nothing
	End Sub
	
	Sub ListFolderContents(strPath)
		Dim objFso, objFolder
		
		Set objFso = CreateObject("Scripting.FileSystemObject")
		Set objFolder = objFso.GetFolder(strPath)
		
		ListFolder(objFolder)
		
		Response.Write("<b>Content</b>")
		Response.Write("<ul>")
		
		ListSubFolders(objFolder)
		ListFiles(objFolder)
		
		Response.Write("</ul>")
		
		Set objFolder = Nothing
		Set objFso = Nothing
	End Sub

	ListFolderContents(Request.QueryString("txtPath")) 
%>

sla deze code op als index.asp. Upload het naar je server. Surf dan naar die pagina met als parameter de dir die je wilt bekijken. dus http://www.host.com/index.asp?txtPath=c:/temp/ ofzo

Rvl

Legacy Member
als ge naar een map wilt verwijzen op de server is het ook niet clientside maar serverside e. Dit kan je dan toch zeer gemakkelijk doen, een lijst van de bestanden in een dir bekomen

Obliv`

Legacy Member
Rvl zei:
als ge naar een map wilt verwijzen op de server is het ook niet clientside maar serverside e. Dit kan je dan toch zeer gemakkelijk doen, een lijst van de bestanden in een dir bekomen

kdacht dat hij zoiets wou ...:)

NoFate

Legacy Member
dJeez zei:
Of het online zal werken heb ik zo mijn twijfels over, maar de URL moet dan de volgende vorm hebben : file://///pcnaam/sharenaam/

aha , dat is wat ik moest hebben!!

Thnx

PS : Wat stellen die eerste ///// voor? En hoe wist je hoeveel dit er moesten zijn?

NoFate

Legacy Member
Obliv` zei:
Kheb even geleden zowat een klein scriptje geschreven om de inhoud van een bepaalde dir op de server te listen.

index.asp
Code:
<script language="javascript" type="text/javascript">
function showFolder(objFolder)
{
	if (document.getElementById(objFolder).style.display == "none") 
	{
		document.getElementById(objFolder).style.display = "block";
	}
	else
	{
		document.getElementById(objFolder).style.display = "none";
	}
}
</script>

<%
	Dim intFolderID
	
	Function GetUrl(strPath)
		Dim strUrl
		
		strUrl = Right(strPath, Len(strPath) - Len(Server.MapPath("/")))
		strUrl = Replace(strUrl, "\", "/")
		
		GetUrl = strUrl
	End function
	
	Sub ListFolder(objFolder)
		Response.Write("<b>" & objFolder.Name & "</b>")
		Response.Write("<ul>")
		Response.Write("<li>Subfolders: " & objFolder.SubFolders.Count & "</li>")
		Response.Write("<li>Files: " & objFolder.Files.Count & "</li>")
		Response.Write("<li>Total size: " & Round((objFolder.Size / 1024), 2) & " kilobytes</li>")
		Response.Write("</ul>")
	End Sub
	
	Sub ListSubFolders(objFolder)
		Dim objSubFolder
		
		For Each objSubFolder in objFolder.SubFolders
			intFolderID = intFolderID + 1
			
			Response.Write("<li><a href=""javascript: showFolder('" & intFolderID & "');"">" & objSubFolder.Name & "</a> - " & Round((objSubFolder.Size / 1024), 2) & " kilobytes</li>")
			
			Response.Write("<ul id=""" & intFolderID & """ style=""display: none;"">")
			ListSubFolders(objSubFolder)
			ListFiles(objSubFolder)
			Response.Write("</ul>")
		Next
		
		Set objSubFolder = Nothing
	End Sub
	
	Sub ListFiles(objFolder)
		Dim objFile
		
		For Each objFile In objFolder.Files
			Response.Write("<li><a href=""" & GetURL(objFile.Path) & """>" & objFile.Name & "</a> - " & Round((objFile.Size / 1024), 2) & " kilobytes</li>")
		Next
		
		Set objFile = Nothing
	End Sub
	
	Sub ListFolderContents(strPath)
		Dim objFso, objFolder
		
		Set objFso = CreateObject("Scripting.FileSystemObject")
		Set objFolder = objFso.GetFolder(strPath)
		
		ListFolder(objFolder)
		
		Response.Write("<b>Content</b>")
		Response.Write("<ul>")
		
		ListSubFolders(objFolder)
		ListFiles(objFolder)
		
		Response.Write("</ul>")
		
		Set objFolder = Nothing
		Set objFso = Nothing
	End Sub

	ListFolderContents(Request.QueryString("txtPath")) 
%>

sla deze code op als index.asp. Upload het naar je server. Surf dan naar die pagina met als parameter de dir die je wilt bekijken. dus http://www.host.com/index.asp?txtPath=c:/temp/ ofzo

Hey

Zou je dit scriptje ook in aspx formaat kunnen schrijven? :)
Ik ben dit aan het testen in .NET development server en ik krijg deze error :

Code:
 This type of page is not served.
Description: The type of page you have requested is not served because it has been explicitly forbidden.  The extension '.asp' may be incorrect.   Please review the URL below and make sure that it is spelled correctly.

Requested URL: /Tailored Blank/browsedir.asp

NoFate

Legacy Member
orez zei:
verander de extensie dan naar browserdir.aspX hé...

nee , dat werkt niet , dan geeft vb .net ook aan dat er fouten in de code zitten.

Er moeten meer aanpassingen gedaan worden voor een migratie van .asp naar .aspx

Obliv`

Legacy Member
NoFate zei:
Hey

Zou je dit scriptje ook in aspx formaat kunnen schrijven? :)
Ik ben dit aan het testen in .NET development server en ik krijg deze error :

Code:
 This type of page is not served.
Description: The type of page you have requested is not served because it has been explicitly forbidden.  The extension '.asp' may be incorrect.   Please review the URL below and make sure that it is spelled correctly.

Requested URL: /Tailored Blank/browsedir.asp

Sorry, ik ken nog geen asp.net. Maar mits wat zoekwerk op google zal je dat wel vlug omgezet krijgen. (Bij add reference de scrrun.dll importeren voor met Fso, Folders en Files te kunnen werken)

Smoerf

Legacy Member
Als je de bestanden wilt inlezen van de user clientside kan het mss met ActiveX, maar dan moet hij het wel goedkeuren, net zoals je pics kan uploaden op je msn space via het ActiveX bestand.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan