• User Attivo

    @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 :quote:

    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.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/"))
    %>

    Ciaoooo
    :ciauz:


  • Super User

    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.


  • User Attivo

    @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:


  • Super User

    fs.DeleteFile(server.mappath("/vetromile.it/public/" & Rs.Fields("nome_file")))


  • User Attivo

    @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


  • Super User

    vedi se il file "/vetromile.it/public/" & Rs.Fields("nome_file") esiste sul serio


  • User Attivo

    @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:

    1. titolo_file = dò un nome al file caricato
    2. nome_file = file da caricare

    Risultato:
    data - titolo_file - file

    :arrabbiato:


  • Super User

    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")


  • User Attivo

    @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 resta

    Eppure il campo è nome_file, non capisco:bho:
    Adesso mi sono perso, ma non mollo è una questione di principio.

    Grazie per la pasienza


  • Super User

    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.


  • User Attivo

    @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! 😢😢


  • Super User

    Puoi ripostare tutto il codice?


  • User Attivo

    @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 Rs

    folder = "/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 folder

    if 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


  • Super User

    Non ti da niente o solo Ecco il file:?


  • User Attivo

    @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))

    :gtsad:


  • Super User

    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??


  • User Attivo

    @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:


  • User Attivo

    @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 :fumato:

    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.
    :quote: :gthi:


  • Super User

    di niente! Alla prossima