- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- Upload file - Eliminare un file
-
Upload file - Eliminare un file
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 x:x
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 %>
-
Per cancellare il file prova con
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(pathdelfile) %>Ottieniil path del file con Server.MapPath
-
@cali1981 said:
Per cancellare il file prova con
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(pathdelfile) %>Ottieniil path del file con Server.MapPath
Azz, allora sono veramente scarso!!
Scusami ma non ho capito il tuo suggerimento.
-
Devi usare il codice sopra, in questo modo:
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>
-
@cali1981 said:
Devi usare il codice sopra, in questo modo:
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>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%"> </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
-
Questo cancellerebbe già il file. Immagino che tu voglia mettere in quella tabella un link che faccia cancellare il file no? Quindi dovrai mettere un link verso una pagina, a cui passi un id, quindi ad esempio cancella_file.asp?id=1234, e in quella pagina prendi il valore di id, carichi il percorso del file da db, e se esiste lo cancelli con quello spezzono di codice che ho scritto sopra.
-
error....e poi che ti scrive?? lo scrivi l'errore completo??
-
@cali1981 said:
Questo cancellerebbe già il file. Immagino che tu voglia mettere in quella tabella un link che faccia cancellare il file no? Quindi dovrai mettere un link verso una pagina, a cui passi un id, quindi ad esempio cancella_file.asp?id=1234, e in quella pagina prendi il valore di id, carichi il percorso del file da db, e se esiste lo cancelli con quello spezzono di codice che ho scritto sopra.
Allora sono ottusoNella pagina dove visualizzo i file caricati inserisco il link con la banale immagine di elimina:
<a href="cancella.asp?id=<%=rs.fields("id")%>"><img src="immagini/elimina.gif" width="16" height="16" border="0" /></a>Nalla pagina cancella.asp:
<%
' //// 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)
%>
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>Risultato: impossibile visualizzare la pagina: errore interno nel server.
Per La Maglia Rosanero: File not found
-
[quote=leftist1973;481674]
Cosi mi funziona, ovvero cancella i record (non anche i file caricati - meglio di nulla) ma ora non capisco perchè la pagina cancella.asp che contiene lo script indicato in basso mi posta "impossibile visualizzare la pagina"
:bho:<%
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")) %>
-
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>ovviamente pathdelfile non va bene qui dentro, devi metterci il path del file, non la scritta path del file
-
@cali1981 said:
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("pathdelfile")) %>ovviamente pathdelfile non va bene qui dentro, devi metterci il path del file, non la scritta path del file
Almeno questo si, ovviamente ho copiato e incollatoprima di aver fatto tutte le modifiche:
<% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("/mdb-database/database.mdb"))
%>Funge tutto, tranne che la pagina risulta ancora con errore interno del server, non mi dà altri errori ne righe.
-
Prova a vedere pezzo per pezzo caso da errore. All'inizio fatti visualizzare solo l'id poi vai avanti e vedi quando si ferma
-
@cali1981 said:
Prova a vedere pezzo per pezzo caso da errore. All'inizio fatti visualizzare solo l'id poi vai avanti e vedi quando si ferma
Grazie Cali, sei stato davvero gentilissimo
Ora funziona tutto, anche se non riesco ad eliminare il file salvato nella cartella pubilc (Aruba)
posto lo script magari se ancora mi sopporti puoi darmi un ultimissimo consiglio.
In caso contrario ancora grazie, ti sono debitore.
<%' //// 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.closeprogressivo=Trim(Request("progressivo"))
Response.Write("Hai cancellato la Comunicazione Interna Dealer!" )
%><% set fs = CreateObject("Scripting.FileSystemObject")
fs.DeleteFile(server.mappath("/vetromile.it/public/"))
%>Ciaoooo
-
Se il codice è esattamente questo, l'errore sta su fs.DeleteFile(server.mappath("/vetromile.it/public/")), perchè oltre alla directory ci devi mettere anche il nome del file che vuoi cancellare, che immagino prenderai da db.
-
@cali1981 said:
Se il codice è esattamente questo, l'errore sta su fs.DeleteFile(server.mappath("/vetromile.it/public/")), perchè oltre alla directory ci devi mettere anche il nome del file che vuoi cancellare, che immagino prenderai da db.
Ciao Cali,
sono riuscito a seguire tutti i tuoi consigli, ma questo non l'ho capito.Cioè non capisco come.
Il campo nel db si chiama nome_file.Ho provato varie soluzioni ma il risultato è sempre lo stesso: il nulla :bho::bho:
-
fs.DeleteFile(server.mappath("/vetromile.it/public/" & Rs.Fields("nome_file")))
-
@cali1981 said:
fs.DeleteFile(server.mappath("/vetromile.it/public/" & Rs.Fields("nome_file")))
Ciao Cali, ancora grazie per la pasienza.
Avevo già provato cosi, ma dà errore pagina (impossibile visualizzare la pagina) e comunque non cancella il file caricato, mentre l'ID si :(:(
x
-
vedi se il file "/vetromile.it/public/" & Rs.Fields("nome_file") esiste sul serio
-
@cali1981 said:
vedi se il file "/vetromile.it/public/" & Rs.Fields("nome_file") esiste sul serio
Esiste, ho provato anche cosi:
fs.DeleteFile(server.mappath("/public/" & Rs.Fields("nome_file")))La pagina dove effettuo il caricamento ha due campi:
- titolo_file = dò un nome al file caricato
- nome_file = file da caricare
Risultato:
data - titolo_file - file
-
Hai i diritti per cancellare il file? Sei su public quindi dovresti averli. Comunque io intendevo provare a vedere se il file esiste usando quel percorso, qualcosa del tipo
if fs.FileExists (server.mappath("/public/" & Rs.Fields("nome_file"))) then Response.write("esiste")