Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 23
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666

    Creare cartella sul server, funziona, ma come separare il risultato?

    Ciao a tutti, sto utilizzando uno script trovato su questo forum per creare una cartella sul server dinamicamente, questo:

    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    PUBLIC FUNCTION createDir(dirName)
    	Dim objFso
    	Dim return
    	on error resume next : err = 0
    	IF dirName = "" OR dirName = Null THEN
    		return = False
    	ELSE
    		Set objFso = Server.CreateObject("Scripting.FileSystemObject")
    		objFso.CreateFolder(Server.MapPath("/public/"&DirName))
    		IF (err = 0) THEN
    			return = True
    		ELSEIF (err <> 0) THEN
    			return = False
    		END IF
    		Set objFso = Nothing
    	END IF
    	'Se volete sapere perchè da il risultato FALSE allora togliete apice che sta all'inizio del prossimo rigo.
    	'Response.Write("NUMERO ERRORE: "&err.number&"
    DESCRIZIONE ERRORE: "&err.description&"
    
    ")
    	err = 0 : err.clear()
    	createDir = return
    END FUNCTION
    Dim page
    page = Request.QueryString("page")
    IF page = "create" THEN
    	Response.Write("Il risultato: " & createDir(Request.Form("Name")) & "   (FALSE=Cartella non creata; TRUE=Cartella creata)")
    ELSE
    %>
    <HTML>
    	<HEAD>
    		<TITLE>Form creazione directory</TITLE>
    	</HEAD>
    	
    	<BODY>
    	<form method="post" action="createDir.asp?page=create">
    		<input type="text" name="Name">
    		<input type="submit" value="Crea Cartella">
    	</form>
    	</BODY>
    </HTML>
    <%
    END IF
    %>
    Funziona senza problemi e non mi ha mai dato errore, solo se cerco di creare una cartella già esistente.

    Il mio problema è questo: vorrei separare la pagina dove risiede il form per inserire il nome della cartella, poi lo script per crearla e successivamente una pagina di risposta nel caso di cartella creata ed una se va in errore.

    Ho provato a modificare questa parte dello script:

    codice:
    Dim page
    page = Request.QueryString("page")
    IF page = "create" THEN
    	Response.Write("Il risultato: " & createDir(Request.Form("Name")) & "   (FALSE=Cartella non creata; TRUE=Cartella creata)")
    ELSE
    in questo modo:

    codice:
    Dim page
    page = Request.QueryString("page")
    If page = "True" THEN
    	response.redirect("ok.asp")
    ELSE
    	response.redirect("error.asp")
    Ma niente da fare!

    Dove sbaglio?
    AltF4

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Non ho capito...
    Esiste il metodo per controllare se ciò che stai tentando di creare già esista, evitandoti l'errore:

    codice:
    if objFso.FolderExists(bla bla) then 
    'già esiste 
    else 
    'non esiste 
    end if

    Roby

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Scusami, innanzitutto grazie per la risposta, ma non riesco a creare una if di questo tipo:

    se la cartella è stata creata vai alla pagina OK.asp
    invece
    se non è stato creata vai alla pagina ERROR.asp

    Lo script è fatto in modo da fare tutto nello stesso file, io invece vorrei dividere il responso, ma non ci riesco.

    Spero di essere riuscito meglio a spiegare il concetto.
    AltF4

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    if objFso.FolderExists(bla bla) then
    response.redirect("paginaok.asp")
    else
    response.redirect("errore.asp")
    end if

    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Scusami ancora (e grazie ancora), non riesco a spiegare bene, ma il mio problema credo risiedi in questa parte di codice:

    codice:
    Dim page
    page = Request.QueryString("page")
    IF page = "create" THEN
    	Response.Write("Il risultato: " & createDir(Request.Form("Name")) & "   (FALSE=Cartella non creata; TRUE=Cartella creata)")
    ELSE
    che io, sbagliando, ho provato a modificare in questo modo:

    codice:
    Dim page
    page = Request.QueryString("page")
    If page = "True" THEN
    	response.redirect("ok.asp")
    ELSE
    	response.redirect("error.asp")
    Ma, ripeto, questo non per controllare se la cartella che si vuole creare già esiste, ma proprio per sapere se la creazione ha avuto successo o meno, nel primo caso va in una pagina, nel secondo in un'altra.

    Spero di esserci riuscito!

    Grazie ancora, naturalmente!
    AltF4

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma il parametro page da dove arriva?

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    E' contenuto nello script originale, che ha tutto in una pagina, mentre io volevo separare la casella di testo dove si inserisce il nome della cartella dallo script che la crea e successivamente si "dirige" ad una delle 2 pagine, OK se va bene e ERROR se va male.

    Nello script originale, il parametro page arriva dal form, ecco:

    codice:
    	<form method="post" action="createDir.asp?page=create">
    		<input type="text" name="Name">
    		<input type="submit" value="Crea Cartella">


    ed ecco tutto lo script (naturalmente compreso di form):

    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    PUBLIC FUNCTION createDir(dirName)
    	Dim objFso
    	Dim return
    	on error resume next : err = 0
    	IF dirName = "" OR dirName = Null THEN
    		return = False
    	ELSE
    		Set objFso = Server.CreateObject("Scripting.FileSystemObject")
    		objFso.CreateFolder(Server.MapPath("/public/"&DirName))
    		IF (err = 0) THEN
    			return = True
    		ELSEIF (err <> 0) THEN
    			return = False
    		END IF
    		Set objFso = Nothing
    	END IF
    	'Se volete sapere perchè da il risultato FALSE allora togliete apice che sta all'inizio del prossimo rigo.
    	'Response.Write("NUMERO ERRORE: "&err.number&"
    DESCRIZIONE ERRORE: "&err.description&"
    
    ")
    	err = 0 : err.clear()
    	createDir = return
    END FUNCTION
    Dim page
    page = Request.QueryString("page")
    IF page = "create" THEN
    	Response.Write("Il risultato: " & createDir(Request.Form("Name")) & "   (FALSE=Cartella non creata; TRUE=Cartella creata)")
    ELSE
    %>
    <HTML>
    	<HEAD>
    		<TITLE>Form creazione directory</TITLE>
    	</HEAD>
    	
    	<BODY>
    	<form method="post" action="createDir.asp?page=create">
    		<input type="text" name="Name">
    		<input type="submit" value="Crea Cartella">
    	</form>
    	</BODY>
    </HTML>
    <%
    END IF
    %>
    AltF4

  8. #8
    Non è la soluzione più giusta dato che è una modifica al volo, ma prova a fare così:
    pagina form.asp
    codice:
    <HTML>
    	<HEAD>
    		<TITLE>Form creazione directory</TITLE>
    	</HEAD>
    	
    	<BODY>
    	<form method="post" action="createDir.asp">
    		<input type="text" name="Name">
    		<input type="submit" value="Crea Cartella">
    	</form>
    	</BODY>
    </HTML>
    Pagina createDir.asp
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    <%
    PUBLIC FUNCTION createDir(dirName)
    	Dim objFso
    	Dim return
    	on error resume next : err = 0
    	IF dirName = "" OR dirName = Null THEN
    	response.redirect "form.asp"
    		response.redirect "vuota.asp"
    	return = False
    	ELSE
    		Set objFso = Server.CreateObject("Scripting.FileSystemObject")
    		objFso.CreateFolder(Server.MapPath("public/"&DirName))
    		IF (err = 0) THEN
    			response.redirect "creata.asp"
    
    			return = True
    		ELSEIF (err <> 0) THEN
    		response.redirect "non_creata.asp"
    
    			return = False
    		END IF
    		Set objFso = Nothing
    	END IF
    	'Se volete sapere perchè da il risultato FALSE allora togliete apice che sta all'inizio del prossimo rigo.
    '	Response.Write("DESCRIZIONE ERRORE: "&err.description&"
    
    ")
    '		Response.Write("NUMERO ERRORE: "&err.number&"
    DESCRIZIONE ERRORE: "&err.description&"
    
    ")
    
    '	err = 0 : err.clear()
    '	createDir = return
    END FUNCTION
    'Dim page
    'page = Request.QueryString("page")
    'IF page = "create" THEN
    
    	Response.Write("Il risultato: " & createDir(Request.Form("Name")) & "   (FALSE=Cartella non creata; TRUE=Cartella creata)")
    
    'ELSE
    %>
    <%
    'END IF
    %>
    poi crei allo stesso livello le due pagine creata.asp e non_creata.asp con il contenuto che vuoi e/o con un redirect a tempo

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    666
    Niente da fare, ottengo solo una pagina bianca e naturalmente la cartella non viene creata.

    AltF4

  10. #10
    Originariamente inviato da AltF4
    Niente da fare, ottengo solo una pagina bianca e naturalmente la cartella non viene creata.

    l'ho provato or ora e funziona. Prova a cambiare:
    objFso.CreateFolder(Server.MapPath("public/"&DirName))

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.