Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    20

    Upload con il metodo Binary Read capriccioso!

    Ciao a tutti al come al solito ho un problema che non si capisce.

    Allora ho creato un form di upload file che ha sempre funzionato, ora con alcuni file pdf si impalla appena cerco di caricarli sul server di Aruba online (NB in locale li carica per bene).

    Non può essere un errore di dimensione perchè ho caricato con lo stesso script file molto più grossi.

    Allora che è !!!!

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    20
    Visto che in genere funzionava non avevo messo il codice credevo fosse qulake problema sui file pdf in questione. mah!
    posto qui il codice e spiego un pò ho due tabelle 1 allievi e una materiali e posso mettere ad un allievo quanti materiali voglio.

    nel form di upload oltre il file passo il codice dell'allievo(r_id) e l'eventuale codice del materiale già esistente (int tale caso fà la modifica non l'inserimento).

    ecco il codice:


    r_id=Request("id")
    mat=Request("mat")

    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")
    Pos = InstrB(BoundaryPos,RequestBin,getByteString("Conte nt-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("filen ame="))
    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),Requ estBin,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

    nome_file = UploadRequest.Item("File").Item("Value")


    if UploadRequest.Item("File").Item("FileName")="" then

    Else

    contentType = UploadRequest.Item("File").Item("ContentType")
    filepathname = UploadRequest.Item("File").Item("FileName")
    filename = Right(filepathname,Len(filepathname)-InstrRev(filepathname,"\"))
    value = UploadRequest.Item("File").Item("Value")



    Set objRs = Server.CreateObject("ADODB.Recordset")
    Set objCN = Server.CreateObject("ADODB.Connection")
    objCN.Open "driver={Microsoft Access Driver (*.mdb)};dbq="&Server.MapPath("/mdb-database/FO_DB.mdb")

    if mat="" then
    g_ctrl=cstr(formatdatetime(now(),2))
    g_ctrl= Mid(g_ctrl, 4, 2) & "/" & left(g_ctrl,2) & "/" & right(g_ctrl,2)
    sSQL = "insert into MATERIALI "
    sSQL = sSQL & "("
    sSQL = sSQL & "RIF_Allievo, "
    sSQL = sSQL & "Data, "
    sSQL = sSQL & "DOCUMENTO, "
    sSQL = sSQL & ") "

    sSQL = sSQL & "Values ("
    sSQL = sSQL & "" & r_id & ","
    sSQL = sSQL & "#" & g_ctrl & "#,"
    sSQL = sSQL & "'" & filename & "'"
    sSQL = sSQL & ")"
    objCN.Execute (sSQL)
    sSQL = "SELECT * FROM MATERIALI ORDER BY id_MATERIALE"
    ObjRs.Open sSQL,objCN,1,3
    ObjRs.movelast
    mat_id=objRS.fields("id_MATERIALE")
    ObjRs.close
    folder = "/public/FO/Materiali/" & mat_id

    else
    sSQL = "SELECT DOCUMENTO FROM MATERIALI WHERE ID_MATERIALE=" & mat
    ObjRs.Open sSQL,objCN,1,3
    mat_doc=objRS.fields("DOCUMENTO")
    ObjRs.close



    Set FileObject=CreateObject("Scripting.FileSystemObjec t")
    matfile="MATERIALI/" & MAT & "/" & mat_doc
    matfile= Server.MapPath(matfile)
    IF FileObject.FileExists(matfile) THEN
    FileObject.DeleteFile matfile
    end if
    set FileObject = nothing
    sSQL = "UPDATE Materiali SET DOCUMENTO = '" & filename & "' WHERE id_materiale = " & mat
    objCN.Execute(sSQL)
    folder = "/public/FO/Materiali/" & mat
    end if

    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



    Spero sia utile per capire se ci sono errori!

    CIAO

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    20
    ERRATA CORRIGE.

    oops avevo ricopiato un'altro script ma comunque le cose non cambiano....
    la cartella di nome folder dove deve entrare il file la calcolo cosi.

    se materiale nuovo: folder = "\public\FO\Materiali\" & mat_id
    se materiale esistente: folder = "\public\FO\Materiali\" & mat


    Grazie a kiunque possa darmi una mano
    per finire il lavoro devo risolvere sto problema.

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2001
    Messaggi
    20
    Per fortuna il problema non si ripresenta più, resto comunque in attesa di una risposta plausibile.


    Grazie a tutti

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.