Upload file - Eliminare un file

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Ciao a tutti,

dopo circa un milione di ricerche on-line per trovare e/o studiare uno script Asp con Db in MySql, ho ceduto per un semplice upload connesso ad un Db Access.

Lo script funziona, con dei limiti, ma soddisfa in minima parte la mia esigenza.

Ora mi sono trovato dinanzi ad un muro, non riesco a capire come fare ad eliminare un file caricato.



Stò impazzendo

Preciso che sono un pò scarsino in materia!!



Posto lo script, magari sapete darmi un saggio consiglio.



Grazie 1000



<form enctype="multipart/form-data" method="post" action="upload.asp" name="form">
<table width="80%" cellpadding="3" cellspacing="3" border="1" bordercolor="#C0C0C0">
<tr>
<td align="center"><b>NOME:</b></td>
<td align="center"><input name="titolo_file" type="text" id="titolo_file" size="30" /></td>
<td align="center"><b>ALLEGATO:</b></td>
<td align="center"><input type="file" name="nome_file" size="20" /></td>
<td align="center"><input type="submit" value="Carica File" /></td>
</tr>
</table>

</form>
<%
' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/database.mdb")

' //// seleziono la tabella per stampare a video i link ai file caricati e ordino i risultati ID decrescente
Sql = "Select * from UPLOAD order by ID Desc ;"
Set Rs = Conn.Execute(Sql)

' //// se la tabella è vuota stampo a video un messaggio e chiudo il records set
If Rs.Eof OR Rs.Bof Then

Response.Write("<center><font color='red'>Non ci sono file caricati sul server.</font></center>")

Rs.Close
Set Rs = Nothing

' //// se la tabella non è vuota
Else
%><br>
<table cellspacing="3" cellpadding="3" width="80%" border="1" bordercolor="#C0C0C0">
<tr>
<td bgcolor="#C0C0C0"><b>DATA</b></td>
<td bgcolor="#C0C0C0"><b>FILE</b></td>
</tr>
<%
' //// effettuo un ciclo sulla tabella per stampare a video tutti i records
While Not Rs.Eof
%>
<tr>
<td><%=Rs.Fields("data")%></td>
<td><a target="_blank" href="/public/<%=Rs.Fields("nome_file")%>"><%=Rs.Fields("titolo_file")%></a></td>
<%
' //// vado avanti con il ciclo
Rs.MoveNext
Wend

' //// chiudo il records set e libero risorse
Rs.Close
Set Rs = Nothing
%>
</tr>
</table>

<% End If %>
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Per la precisione, la cancellazione di un file col File System avviene cosi:

HTML:
<%
	Dim fso
	Set fso = Server.CreateObject("Scripting.FileSystemObject")
	fso.DeleteFile(Server.MapPath("file_da_eliminare.jpg"))
	Set fso = Nothing
%>

Ciao ;)
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Per la precisione, la cancellazione di un file col File System avviene cosi:

HTML:
<%
	Dim fso
	Set fso = Server.CreateObject("Scripting.FileSystemObject")
	fso.DeleteFile(Server.MapPath("file_da_eliminare.jpg"))
	Set fso = Nothing
%>

Ciao ;)
No sono ottuso o forse fuso, scusatemi.

Creo la teballa che mi visualizza ciò che ho creato:
<%
' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/database.mdb")
' //// seleziono la tabella per stampare a video i link ai file caricati e ordino i risultati ID decrescente
Sql = "Select * from UPLOAD order by ID Desc ;"
Set Rs = Conn.Execute(Sql)
' //// se la tabella è vuota stampo a video un messaggio e chiudo il records set
If Rs.Eof OR Rs.Bof Then
Response.Write("<center><font color='red'>Non ci sono file caricati sul server.</font></center>")
Rs.Close
Set Rs = Nothing
' //// se la tabella non è vuota
Else
%>
<div align="center">
<table cellspacing="3" cellpadding="3" width="80%" border="1" bordercolor="#C0C0C0">
<tr>
<td bgcolor="#C0C0C0" width="30%"><b>DATA</b></td>
<td bgcolor="#C0C0C0" width="30%">&nbsp;</td>
<td bgcolor="#C0C0C0" width="30%"><b>FILE</b></td>
</tr>
<%
' //// effettuo un ciclo sulla tabella per stampare a video tutti i records
While Not Rs.Eof
%>
<tr>
<td width="30%"><%=Rs.Fields("data")%></td>
<td width="30%">

</td>
<td width="30%">
<a target="_blank" href="/public/<%=Rs.Fields("nome_file")%>"><%=Rs.Fields("titolo_ file")%></a></td>
<%
' //// vado avanti con il ciclo
Rs.MoveNext
Wend
' //// chiudo il records set e libero risorse
Rs.Close
Set Rs = Nothing
%>
</tr>
</table>
</div>
<% End If %>

Se io inserisco lo script:
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>

Mi dà errore come se il file non fosse trovato: error '800a0035'

Ti e vi chiedo ancora scusa ma sono davvero stanchissimo.
Grazie :dipser::dipser:
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
No fuso :crying:

Finalmente ho trovato una soluzione, ovvero con lo script in basso situato in una pagina chiamata cancella.asp elimino i record (non anche i file caricati - meglio di nulla) ma ora non capisco perchè la pagina mi posta "impossibile visualizzare la pagina"

<%
id = request.querystring("id")
' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/database.mdb")
' //// seleziono la tabella per stampare a video i link ai file caricati e ordino i risultati ID decrescente
Sql = "DELETE FROM UPLOAD WHERE id="&id&""
Set Rs = Conn.Execute(Sql)
%>
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Soluzione trovata a metà, ma è già qualcosa :elvis:

Riesco a cancellare il record dal db ma non il file nella cartella public (Aruba).
Posto lo script se potete dirmi dove sbaglio vi faccio una statua :)

<%


' //// connessione al DB
Set Conn=Server.CreateObject("ADODB.Connection")
Conn.Open "PROVIDER=MSDASQL;" & _
"DRIVER={Microsoft Access Driver (*.mdb)}; " & _
"DBQ=" & server.mappath("/mdb-database/database.mdb")
%>
<%
id = request.querystring("id")


' //// seleziono la tabella per stampare a video i link ai file caricati e ordino i risultati ID decrescente
Sql = "DELETE FROM UPLOAD WHERE id="&id&""
Set Rs = Conn.Execute(Sql)
conn.close


progressivo=Trim(Request("progressivo"))
Response.Write("Hai cancellato la Comunicazione Interna Dealer!" )

%>


<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("/vetromile.it/public/"))
%>

Grazie 1000
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Sbagli qui secondo me:

fs.DeleteFile(server.mappath("/vetromile.it/public/"))

Non specificare il dominio e magari (non ci metto la mano sul fuoco) usa il back slash, quindi:

fs.DeleteFile(server.mappath("public\"))

In secondo luogo, non passi alcun file da cancellare. Non so cosa devi cancellare ma vedo che recuper un ID come querystring.

Ad esempio, quindi:

fs.DeleteFile(server.mappath("public\" & id & ".jpg"))

nel caso quindi in tu voglia cancellare, ad esempio, 5.jpg.

Che devi cancellare? :)

Poi setta su Nothing la variabile fs.

Fammi sapere!
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Sbagli qui secondo me:

fs.DeleteFile(server.mappath("/vetromile.it/public/"))

Non specificare il dominio e magari (non ci metto la mano sul fuoco) usa il back slash, quindi:

fs.DeleteFile(server.mappath("public\"))

In secondo luogo, non passi alcun file da cancellare. Non so cosa devi cancellare ma vedo che recuper un ID come querystring.

Ad esempio, quindi:

fs.DeleteFile(server.mappath("public\" & id & ".jpg"))

nel caso quindi in tu voglia cancellare, ad esempio, 5.jpg.

Che devi cancellare? :)

Poi setta su Nothing la variabile fs.

Fammi sapere!

Ciao Lukeonweb,
sulla prima parte ti seguo,
e sulla seconda parte che mi sono perso.

Quello che vorrei riuscire a fare e comprendere e come cancellare:
Id = 5
nome_file = ciao.txt

Querystring cancello l'ID 5 cosi non lo visualizzo nell'elenco dei file caricati.

Io vorrei con un unica operazione cancellare entrambi: ID 5 e ciao.txt (che risiede nella cartella public).

Grazie 1000
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Se in nome_file hai il nome del file da cancellare allora fai cosi:

fs.DeleteFile(server.mappath("public\" & nome_file))

Fammi sapere ;)

:dipser: Nulla.

Impossibile visualizzare la pagina.
Ma il record l'ho elimina sempre il file no.

Ora è per principio mannaggia.
PS: ovviamente ho i permessi sulla cartella public.
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Mi scrivi, per favore, la URL assoluta dal tuo server del file da cancellare?

Anche se stai provando su localhost.

E' una scemata, non può funzionare. Ti trovi: indicami anche l'errore esatto che ti da.
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Mi scrivi, per favore, la URL assoluta dal tuo server del file da cancellare?

Anche se stai provando su localhost.

E' una scemata, non può funzionare. Ti trovi: indicami anche l'errore esatto che ti da.

Ciao Luke,
grazie 1000, onestamente stavo per rinunciarci, francamente mi trovo in un vicolo cieco.

Allora, non sono in localhost ma utilizzo la cartella public di Aruba, nella quale ho tutti i permessi di scrittura (almeno cosi credo), quindi \public

Ho anche modificato il file che dovrebbe effettuare l'eliminazione del record e del file, ma ora mi dice file not found (errore assurdo, il file è li!!!).

Preciso che il db si popola perfettamente, l'id corisponde al file che anch'esso viene inserito nel record, con il nome corretto.

Ti posto lo script modificato:
<%
........... connessione al db
%>

<%
' Recupero l id
id=Request.Querystring("id")
' Elimino il file corrispondente all id
Dim Rs
Dim Sql
Sql = "SELECT nome_file FROM UPLOAD WHERE id="&id
Set Rs = Conn.Execute(Sql)
If Rs.Eof Then
Response.Write "Nessun file associato per id prodotto <strong>" & Request.QueryString("id") & "</strong>"
Else
Dim objFSO
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
'Il file viene cancellato
objFSO.DeleteFile(Server.MapPath("public/"&(rs("nome_file"))))

Set objFSO = Nothing
%>
<%
' Elimino il record
SQL="DELETE FROM UPLOAD WHERE id="&id
Conn.Execute(SQL)
conn.close
Set conn = NOTHING

End If
%>

Mi trovo difronte ad un muro!

Ancora grazie 1000
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Ci vedo qualche parentesi in più... prova cosi:

objFSO.DeleteFile(Server.MapPath("public/" & rs("nome_file")))

Logicamente il tuo codice mi sembra corretto, anche se IIS in genere funziona meglio dell'occhio umano in queste cose :)

Mi dici esattamente che errore ti da? oppure non ti da errore e semplicemente non cancella il file? Se è cosi prova a "giocare" con gli / all'interno del MapPath, ad esempio:

objFSO.DeleteFile(Server.MapPath("public\" & rs("nome_file")))

oppure passagli il percorso locale assoluto:

objFSO.DeleteFile("C:\Inetpub\wwwroot\tuosito\public\" & rs("nome_file"))

Se non va prova a stampare a video il path:

Response.Write "C:\Inetpub\wwwroot\tuosito\public\" & rs("nome_file")

copialo, incollalo nel browser e vedi se il file, a quell'indirizzo esiste o no.

Anche su Aruba dovresti poter conoscere il percorso locale, fisico, del file.

Fammi sapere!
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Fammi sapere!

L'errore che mi dà è assurdo: File not Found!!
La riga è objFSO.DeleteFile(Server.MapPath("public\" & rs("nome_file")))

Dico assurdo perchè il file è li, lo vedo anche nel record del db, come può non trovarmelo :confused::crying:

Luke posso chiederti un immenso piacere, posso inviarti le pagine??
Io veramente non capisco, sicuramente commetto un errore, ma proprio non capisco dove e quale.

Grazie
 

lukeonweb

Utente Attivo
5 Mar 2003
5.175
13
38
46
Napoli
www.lucaruggiero.it
Ho provato sul mio localhost cosi e mi ha cancellato il file "acampora.php" nella cartella "public" che ho creato nella root:

objFSO.DeleteFile(Server.MapPath("\public\"&(rs("nome_file"))))

In sostanza ci siamo scordati dello \ avanti :)

Se non dovesse andare prova con / (dipende dalla configurazione dei path su IIS e Aruba non so cosa fa).

Mi fai sapere per favore, altrimenti stanotte non dormo? :)
 

leftist73

Utente Attivo
18 Ott 2006
73
0
0
Ho provato sul mio localhost cosi e mi ha cancellato il file "acampora.php" nella cartella "public" che ho creato nella root:

objFSO.DeleteFile(Server.MapPath("\public\"&(rs("nome_file"))))

In sostanza ci siamo scordati dello \ avanti :)

Se non dovesse andare prova con / (dipende dalla configurazione dei path su IIS e Aruba non so cosa fa).

Mi fai sapere per favore, altrimenti stanotte non dormo? :)
Funzionaaaaaaaaa
Pazzesco per uno \ !!!!! :hammer: :fuck:

Non ho parole Luke, erano due notti che non mi davo pace.
Sei un grande!

Grazie, Grazie e ancora Grazie.

Ps: Desidero ringraziare anche Pole, che mi ha dato il primo spunto (stringa).
 
Discussioni simili
Autore Titolo Forum Risposte Data
L Modifica file upload in ASP Classic ASP 2
S Upload file senza doverlo selezionare PHP 2
G Upload file error Apache 0
R Modifica codice per l'upload di più file PHP 1
S [PHP] Upload stesso file PHP 14
G [PHP] upload file in server: percorso cartella PHP 2
M Upload 4 file php PHP 11
M [ASP] Upload file da form controllo Classic ASP 5
M [PHP] Nome file, upload e rinominare PHP 2
M [PHP] upload di un file esistente overwrite PHP 1
N [PHP] Test per l'upload di file attraverso un bot Telegram PHP 2
C [PHP] Problema upload file (multiplo) PHP 1
S [PHP] Upload file... PHP 6
P Barra upload file jQuery 1
giancadeejay [PHP] Aggiornare DB tramite UPLOAD file .csv PHP 39
V [PHP] upload di file in cartella e sua sicurezza PHP 137
T [ASP] upload file Classic ASP 3
V File upload.php della guida, ma ha un errore PHP 8
M Fare upload di file scegliendo la cartella di destinazione PHP 78
M rinominare file in upload PHP 3
Y script per upload file PHP 9
Devil-94 rimuovere i spazi del file in upload... PHP 1
R Problema upload file PHP 1
S Indicare una directory di destinazione per l'upload di un file PHP 1
M Errore nell'Upload di un file PHP 0
Nik Implementare script "upload file" nel proprio sito web... tramite google drive Javascript 1
francesco7 [Problema] esecuzione script Upload file in php PHP 0
I upload file php / javascript / mysql PHP 0
D Upload file in cartella con progress bar PHP 6
R upload file php PHP 5
P upload e rename file PHP 2
xone Form con campi input text e upload file PHP 4
A Upload in App Android (sfoglia file) Sviluppo app per Android 1
F Errore filezilla upload file Hosting 1
R upload multiplo di file PHP 7
F upload file PHP 1
M Upload di n solo file in due cartelle diverse PHP 4
C ridurre dimensione file immagine prima dell'upload Javascript 0
F Problema con upload di file PHP 1
P Upload file html speciale HTML e CSS 3
M Adattare script di "form mail con upload file" al mio form mail HTML! PHP 7
G UPLOAD con controllo esistenza file Classic ASP 0
M upload file con progress bar PHP 10
F pagina bianca upload file Joomla 0
A upload file PHP 14
E upload file in un web server, da un'altro web server PHP 2
I upload di piu file contemporaneamente PHP 1
F upload file da iphone,ipadragazzi... PHP 3
M Upload file progress bar Javascript 10
S Upload file con IIS7? Web Server 0

Discussioni simili