• 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