- Home
- Categorie
- Coding e Sistemistica
- Coding
- Upload file - Eliminare un 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 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") 
 
- 
							
							
							
							
							@cali1981 said: 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") Si ho i diritti per cancellare. 
 Bhè, se uso la tua stringa mi esce impossibile visualizzare la pagina - record eliminato - il file restaEppure il campo è nome_file, non capisco:bho: 
 Adesso mi sono perso, ma non mollo è una questione di principio.Grazie per la pasienza 
 
- 
							
							
							
							
							
il codice che ti ho dato io non penso vada bene, era solo in linea di principio. controllalo, e in caso fai come prima vedendo qual'è la riga che non va. 
 
- 
							
							
							
							
							@cali1981 said: il codice che ti ho dato io non penso vada bene, era solo in linea di principio. controllalo, e in caso fai come prima vedendo qual'è la riga che non va. 
 E' la stringa fs che non và, eppure quelli sono i campi!  
 
- 
							
							
							
							
							
Puoi ripostare tutto il codice? 
 
- 
							
							
							
							
							@cali1981 said: Puoi ripostare tutto il codice? 
 Cali ma è possibile che l'errore lo faccia nello script della pagina upload.asp
 <%
 option explicit
 Dim folder
 Dim titolo_file
 Dim nom_file
 Dim byteCount
 Dim RequestBin
 Dim PosBeg
 Dim i
 Dim char
 Dim PosEnd
 Dim boundary
 Dim boundaryPos
 Dim Pos
 Dim intCount
 Dim Name
 Dim PosFile
 Dim PosBound
 Dim Value
 Dim FileName
 Dim ContentType
 Dim nome_file
 Dim Conn
 Dim filepathname
 Dim ScriptObject
 Dim MyFile
 Dim Sql
 Dim Rsfolder = "/public" Response.Expires=0 
 Response.Buffer = TRUE
 Response.Clear
 Sub BuildUploadRequest(RequestBin)
 PosBeg = 1
 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
 boundary = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
 boundaryPos = InstrB(1,RequestBin,boundary)
 Do until (boundaryPos=InstrB(RequestBin,boundary & getByteString("--")))
 Dim UploadControl
 Set UploadControl = CreateObject("Scripting.Dictionary")
 'Get an object name
 Pos = InstrB(BoundaryPos,RequestBin,getByteString("Content-Disposition"))
 Pos = InstrB(Pos,RequestBin,getByteString("name="))
 PosBeg = Pos+6
 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
 Name = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
 PosFile = InstrB(BoundaryPos,RequestBin,getByteString("filename="))
 PosBound = InstrB(PosEnd,RequestBin,boundary)
 If PosFile<>0 AND (PosFile<PosBound) Then
 PosBeg = PosFile + 10
 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(34)))
 FileName = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
 UploadControl.Add "FileName", FileName
 Pos = InstrB(PosEnd,RequestBin,getByteString("Content-Type:"))
 PosBeg = Pos+14
 PosEnd = InstrB(PosBeg,RequestBin,getByteString(chr(13)))
 ContentType = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
 UploadControl.Add "ContentType",ContentType
 PosBeg = PosEnd+4
 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
 Value = MidB(RequestBin,PosBeg,PosEnd-PosBeg)
 Else
 Pos = InstrB(Pos,RequestBin,getByteString(chr(13)))
 PosBeg = Pos+4
 PosEnd = InstrB(PosBeg,RequestBin,boundary)-2
 Value = getString(MidB(RequestBin,PosBeg,PosEnd-PosBeg))
 End If
 UploadControl.Add "Value" , Value
 UploadRequest.Add name, UploadControl
 BoundaryPos=InstrB(BoundaryPos+LenB(boundary),RequestBin,boundary)
 Loop
 End Sub
 Function getByteString(StringStr)
 For i = 1 to Len(StringStr)
 char = Mid(StringStr,i,1)
 getByteString = getByteString & chrB(AscB(char))
 Next
 End Function
 Function getString(StringBin)
 getString =""
 For intCount = 1 to LenB(StringBin)
 getString = getString & chr(AscB(MidB(StringBin,intCount,1)))
 Next
 End Function
 byteCount = Request.TotalBytes
 RequestBin = Request.BinaryRead(byteCount)
 Dim UploadRequest
 Set UploadRequest = CreateObject("Scripting.Dictionary")
 BuildUploadRequest RequestBin
 ' //// Fine Componente Upload
 ' //// riempio le variabili con valori proveninti dalla form
 titolo_file = UploadRequest.Item("titolo_file").Item("Value")
 nome_file = UploadRequest.Item("nome_file").Item("Value")
 ' //// controllo che la form sia state regolarmente popolata
 If IsNull(nome_file) OR nome_file = "" OR IsNull(titolo_file) OR titolo_file = "" Then
 Response.Write ("<center><br><b>CAMPI OBBLIGATORI!</b><br><br><a href='javascript:history.back()'><b>RITORNA</b></a></center>")
 Response.End
 End if
 ' //// 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")
 ' //// creo il file nella folderif UploadRequest.Item("nome_file").Item("FileName")="" then 
 Else
 contentType = UploadRequest.Item("nome_file").Item("ContentType")
 filepathname = UploadRequest.Item("nome_file").Item("FileName")
 filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,""))
 value = UploadRequest.Item("nome_file").Item("Value")
 Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
 Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder)&""&filename)
 For i = 1 to LenB(value)
 MyFile.Write chr(AscB(MidB(value,i,1)))
 Next
 MyFile.Close
 End if
 ' //// seleziono la tabella dove scrivero l'ora, il titolo ed il nome del file
 Sql = "Select * FROM upload"
 Set Rs = Server.CreateObject("ADODB.Recordset")
 Rs.Open SQL, Conn, 1, 2
 ' //// aggiugo un nuovo record alla tabella
 Rs.AddNew
 Rs("data") = date()
 Rs("titolo_file") = titolo_file
 Rs("nome_file") = filename
 Rs.UpDate
 ' //// chiudo il record set
 Rs.Close
 Set Rs = Nothing
 ' //// chiudo la connessione
 Conn.Close
 Set Conn = Nothing
 ' //// carico la pagina di risposta e stampo a video il link al file caricato
 Response.Redirect("index.asp")
 %>Forse è qui che commetto qualche errore, perchè se ad esempio faccio un response.write("Ecco il file: "& nome_file) 
 Response.end
 Non mi dà nulla
 
- 
							
							
							
							
							
Non ti da niente o solo Ecco il file:? 
 
- 
							
							
							
							
							@cali1981 said: Non ti da niente o solo Ecco il file:? 
 Nel senso che non mi posta nulla, ne il nome del file ne una stringa.... nulla.
 Come se non riconoscesse nulla.Preciso che in upload ho scritto filename, ma neanche cosi funziona: 
 fs.DeleteFile(server.mappath("/public/" & filename)) 
 
- 
							
							
							
							
							
Quello che intendevo io è se fa vedere la parte di stringa del response write, cioè "Ecco il file: ", oppure nemmeno quello. Provato a uppare un file e poi cancellarlo direttamente inserendo il percorso dentro fs.deletefile?? 
 
- 
							
							
							
							
							@cali1981 said: Quello che intendevo io è se fa vedere la parte di stringa del response write, cioè "Ecco il file: ", oppure nemmeno quello. Provato a uppare un file e poi cancellarlo direttamente inserendo il percorso dentro fs.deletefile?? Si si, "Ecco il file: " lo leggo. 
 No non ho provato ad uppare il file, bella domanda :?:?
 Peccato che non sappia come :bho:
 
- 
							
							
							
							
							@leftist1973 said: Si si, "Ecco il file: " lo leggo. 
 No non ho provato ad uppare il file, bella domanda :?:?
 Peccato che non sappia come :bho:Ciao Cali, 
 finalmente funzionaaaa Posto lo script: 
 <%.....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
 %>Grazie per l'enorme pasienza e per l'aiuto. 
   