Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Verifica Esistenza file

    Ciao a tutti, su questo script vorrei introdurre un controllo per l'esistenza di un file. Lo script è il seguente:

    codice:
    <%
    ' //// dichiarazione delle variabili obbligatoria
    option explicit
    
    ' //// dichiaro le variabili
    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 
    Dim cod
    Dim val
    Dim username
    Dim FileObject 
    Dim objFile
    
    ' VERIFICHIAMO SE L'UTENTE E' IDENTIFICATO (LOGGATO)
    
    IF Session("Loggato") = False and Session("Username") = "" then
    ' UTENTE NON LOGGATO
    ' (SESSION "LOGGATO" = FALSE E LA SESSION "USERNAME" NON HA NESSUN VALORE)
    
    ' PORTA L'UTENTE NELLA PAGINA LOGIN.ASP
    ' PER FARLO IDENTIFICARE
    
    Response.Redirect "animazione/login.asp"
    End IF
    
    
    ' //// Directory dove verrà caricato il file (la cartella deve avere i permessi in scrittura)
    cod=request.querystring("cod")
    val=request.querystring("val")
    username = Session("username")
    folder = "Archivi/"&username&"/"&val&""
    
    '	Response.write(folder)
    
    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>
    CAMPI OBBLIGATORI!
    
    RITORNA</center>")
    	Response.End
    End if
    
    Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    If objFile.FileExists (Server.MapPath(nome_file)) Then
      Response.Write "Il file esiste!"
      
    End If
    Set objFile = Nothing
    
    ' //// 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")
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("mdb-database/aziende.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("azienda") = val
    Rs.UpDate
    
    ' //// chiudo il record set e libero le risorse
    	Rs.Close
    	Set Rs = Nothing
    
    ' //// chiudo la connessione e libero le risorse
    	Conn.Close
    	Set Conn = Nothing
    
    ' //// carico la pagina di risposta e stampo a video il link al file caricato
    dim myurl
    
        myurl = "animazione/gestione/upindex.asp?"
    	myurl =myurl & "cod=" & cod
    	myurl =myurl & "&val=" & val
    	
    	Response.redirect(myurl)
    %>
    ora dove e come posso secondo voi collocare

    codice:
    Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    If objFile.FileExists (Server.MapPath(nome_file)) Then
      Response.Write "Il file esiste!"
      Response.End
    End If
    Set objFile = Nothing
    Ho provato parecchi modi ma mi restituisce sempre

    "Errore di run-time di Microsoft VBScript (0x800A01B6)
    Proprietà o metodo non supportati dall'oggetto"

    Grazie in anticipo!

  2. #2
    ciao..
    allora...se ho capito, tu crei un file in caso questo non esista..giusto?

    se sì,secondo me potresti provare a inserire il tuo codice in mezzo a queste 2 righe di codice:

    set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    * qui.. però credo che ti dia errore perchè tu scrivi 2 volte questa istruzione:
    Server.CreateObject("Scripting.FileSystemObject")

    prova a usare ScriptObject anzichè objFile per il FileExists....

    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder &"/"& filename))

    fammi sapere!
    mok@

  3. #3
    non va... non funge.... mi restituisce sempre le stesso errore...

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Lo devi mettere prima di scrivere nel db quindi... prima di questa riga

    codice:
    ' //// seleziono la tabella dove scrivero l'ora, il titolo ed il nome del file
    Sql = "Select * FROM upload"

    Roby

  5. #5
    infatti... l'ho scritto prima... ma nulla...
    stò provando ora in questo modo... ma mi crea problemi sul successivo mappath

    codice:
    dim strFilePath
    dim objFso
    folder = Server.MapPath(nome_file) 
    Set objFso = Server.createObject("Scripting.FileSystemObject") 
    if objFso.FileExists(nome_file) then 
    Response.Write("Il file esiste") 
    end if 
    Set objFso = Nothing

  6. #6
    che vuol dire 'mi crea problemi'?

  7. #7
    che si incasinava sui percorsi

    ora stò provando così:

    codice:
     
    Set ScriptObject = Server.CreateObject("Scripting.FileSystemObject")
    Set MyFile = ScriptObject.CreateTextFile(Server.mappath(folder &"/"& filename))
    if  ScriptObject.FileExists(nome_file) then 
    Response.Write("<center>
    ESISTE GIA' UN FILE CON QUESTO NOME!
    
    RITORNA</center>") 
    end if
    Ma l'upload l'effettua lo stesso.

  8. #8
    ovvio. devi fare così

    IF ---RoutineFileExist--- THEN
    ---MessaggioDiErrore--
    ELSE
    ---RoutineDiUpload---
    END IF


    quella è la logica, sistema adeguatamente il tuo script

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 © 2025 vBulletin Solutions, Inc. All rights reserved.