Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    [Gestione file] Verificare se il file esiste ed estrarre l'estensione

    Ciao a tutti,
    ho fatto un pò di ricerche su web e su questo forum, ma quello di cui ho bisogno io non riesco a trovarlo. Al momento riesco a implementare queste funzionalità
    - cercare un file su disco
    - eseguire una lettura di una dir ed estrarre per ogni file la sua estensione.

    Il problema però ora è questo.

    Partendo da un nome di un file "pippo" che può avere varie estensioni (.doc, .zip, .html, etc...), come posso verificare se in una directory questo è presente ed estrarne la tipologia, ovvero il objItem.Type corrispondente?

    Devo evitare , per la quantità elevata di dati presenti nella dir (oltre 70mila file), di fare qualcosa del genere (già implementato e funzionante)

    codice:
    For Each objItem In objFolder.Files
        Listing (num, 1) = objItem.Name
        Listing (num, 2) = objItem.Size
        Listing (num, 3) = objItem.Type
        Listing (num, 4) = objItem.Path
        num=num+1
    Next
    ....
    Allora, pensavo di procedere indicando come nome di file una cosa del genere

    codice:
    fname = "docuavvi\file\pippo.*"
    
    Dim objFile
    Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    If objFile.FileExists (Server.MapPath(fname)) Then
    
    etc...
    e quindi poi ricavare il tipo.

    Però non funziona

    Qualche suggerimento ?

    Grazie


    ps. purtroppo è urgente

  2. #2
    Utente di HTML.it L'avatar di wallrider
    Registrato dal
    Apr 2003
    Messaggi
    2,752

    Re: [Gestione file] Verificare se il file esiste ed estrarre l'estensione

    Originariamente inviato da mosquito70
    ...

    Però non funziona
    :master:
    RIP Cicciobenzina 9/11/2010

    "Riseminaciceli, i ceci nell'orto"

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150

    Re: Re: [Gestione file] Verificare se il file esiste ed estrarre l'estensione

    Originariamente inviato da wallrider
    :master:
    Mi da quest'errore

    codice:
    Server.MapPath(), ASP 0173 (0x80004005)
    Il parametro Path del metodo MapPath contiene un carattere non valido.
    La parte di codice incriminata è questa (la riga rossa l'errore)

    codice:
    		fname = "docuavvi\file\"&rs("NUME_AVVI")&".*"
    
    		response.write "NOME FILE -->"&fname&"
    "
    
    		Dim objFile
    		Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    
    		If objFile.FileExists (Server.MapPath(fname)) Then 
    
    (...)

    La response write è questa

    NOME FILE --> docuavvi\file\C203058.*

    Il file, chiaramente esiste e ha estensione .pdf

    Dove sbaglio?


  4. #4
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Per riconoscere il tipo file, utilizzo questa funzione trovata su asp.html.it

    codice:
    <% 
    function analizza(strNome) 
    dim arrParti 
    arrParti=split(strNome,".") 
    dim strEstensione 
    strEstensione=arrParti(UBOUND(arrParti)) 
    select case strEstensione 
    case "asp" 
    analizza="Pagina Active Server Page" 
    case "aspx" 
    analizza="Pagina creata in asp.net" 
    case "php","php3","php4" 
    analizza="Pagina Personal Home Page" 
    case "html","htm" 
    analizza="Pagina web statica" 
    case "js" 
    analizza="Pagina contenente Javascript" 
    case "css" 
    analizza="Foglio di stile" 
    case else 
    analizza="File NON conosciuto in elenco." 
    end select 
    end function 
    
    'In strFile, bisogna mettere il nome del file che si desidera far analizzare. 
    dim strFile 
    strFile="myPage.asp" 
    response.write analizza(strFile) 
    %>
    
    Mi manca però la parte di verifica dell'esistenza del file. 
    
    Non è che, sapendo ad esempio che avrò n-tipologie, devo creare n-variabili, ognuna con una delle tipologie previste e poi fare la ricerca, vero?
    
    Ditemi di no...  :stordita:

  5. #5
    L'esistenza di un file:
    codice:
    if fso.fileExists(server.mapPath(percorsoFile)) then
    ' il file esiste
    else
    ' il file non esiste
    end if

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Mems
    L'esistenza di un file:
    codice:
    if fso.fileExists(server.mapPath(percorsoFile)) then
    ' il file esiste
    else
    ' il file non esiste
    end if
    Scusa, ma questo lo avevo già fatto. Così...
    If objFile.FileExists (Server.MapPath(fname)) Then
    A me serve solo sapere se posso cercare un file solo attraverso il nome, senza conoscere a priori l'estensione.
    Quindi se il file esiste, estrarre dal nome completo del file, l'estensione.

    Quest'ultima operazione l'ho già sviluppata. Mi manca insomma solo la parte relativa alla ricerca di un file del tipo

    pippo.*

    Si può fare?

    Grazie comunque per la risposta

  7. #7
    Devi fare un ciclo su tutti i file e vedere se nel nome file è presente la stringa pippo.

    codice:
    for each file in files
      if inStr(file.name,"pippo.") > 0 then
      ' file trovato
      nomeFile = file.name
      exit for ' se si vuole uscire dal ciclo
      end if
    next
    response.write fileName

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Mems
    Devi fare un ciclo su tutti i file e vedere se nel nome file è presente la stringa pippo.

    codice:
    for each file in files
      if inStr(file.name,"pippo.") > 0 then
      ' file trovato
      nomeFile = file.name
      exit for ' se si vuole uscire dal ciclo
      end if
    next
    response.write fileName
    Sul primo post avevo scritto che non posso fare una lista sulla dir perchè è troppo lenta (ci sono 70mila file)
    Al momento infatti funziona così, ma va troppo lenta, appunto.

    Come risolvo?

    Sapendo che al momento ho 4 estensioni potrei fare così
    codice:
    fnamepdf = "docuavvi\file\"&rs("NUME_AVVI")&".pdf"
    		fnamedoc = "docuavvi\file\"&rs("NUME_AVVI")&".doc"
    		fnametxt = "docuavvi\file\"&rs("NUME_AVVI")&".txt"
    		fnamezip = "docuavvi\file\"&rs("NUME_AVVI")&".zip"
    
    		'response.write "NOME FILE -->"&fname&"
    "
    
    		Dim objFile
    		Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    
    		If objFile.FileExists (Server.MapPath(fnamepdf)) or
    			objFile.FileExists (Server.MapPath(fnamedoc)) or
    				objFile.FileExists (Server.MapPath(fnametxt)) or
    					objFile.FileExists (Server.MapPath(fnamezip))	Then
    
    ...
    Ma a parte il fatto che poi non so come recuperare l'estensione, ovvero sapere che file ho trovato, fa veramente schifo, visto che se si aggiunge una estensione sono fregato.


  9. #9
    Secondo me per recuperare l'estensione del file basta leggere il nome del file al contrario (es funzione StrReverse(str) ) e recuperare l'estensione fino al primo punto disponibile.

    Poi basta invertire nuovamente la stringa.

    Ciao!

  10. #10
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Originariamente inviato da Luck Floyd
    Secondo me per recuperare l'estensione del file basta leggere il nome del file al contrario (es funzione StrReverse(str) ) e recuperare l'estensione fino al primo punto disponibile.

    Poi basta invertire nuovamente la stringa.

    Ciao!
    Grazie della risposta, ma credo che il mio thread non sia stato chiaro.

    A me serve solo sapere se posso cercare un file solo attraverso il nome, senza conoscere a priori l'estensione.

    Comunque al momento ho risolto in questo modo, che fa decisamente schifo

    codice:
    (...)
    	function analizza(nomefile)
    		Dim vc_tipofile
    
    		vc_tipofile = nomefile
    	    vc_tipofile = LCase(Right(vc_tipofile, Len(vc_tipofile) - InStrRev(vc_tipofile, ".", -1, 1)))
    
    		select case vc_tipofile
    			case "doc"
    				analizza="File Word"
    			case "pdf"
    				analizza="File Acrobat"
    			case "txt"
    				analizza="File di testo"
    			case "zip"
    				analizza="File archivio zip"
    			case else
    				analizza="File NON conosciuto in elenco."
    		end select
    	end function
    (...)
    
    		fnamepdf = "docuavvi\file\"&rs("NUME_AVVI")&".pdf"
    		fnamedoc = "docuavvi\file\"&rs("NUME_AVVI")&".doc"
    		fnametxt = "docuavvi\file\"&rs("NUME_AVVI")&".txt"
    		fnamezip = "docuavvi\file\"&rs("NUME_AVVI")&".zip"
    
    		Dim objFile
    		Set objFile = Server.CreateObject ("Scripting.FileSystemObject")
    
    		If objFile.FileExists (Server.MapPath(fnamepdf)) then
    			'response.write "Trovato pdf-->"&fnamepdf&"
    "
    			vc_flagtrovato="S"
    			fname=fnamepdf
    		end if
    
    		If objFile.FileExists (Server.MapPath(fnamedoc)) then
    			'response.write "Trovato doc-->"&fnamedoc&"
    "
    			vc_flagtrovato="S"
    			fname=fnamedoc
    		end if
    
    		If objFile.FileExists (Server.MapPath(fnametxt)) then
    			'response.write "Trovato txt-->"&fnametxt&"
    "
    			vc_flagtrovato="S"
    			fname=fnametxt
    		end if
    
    		If objFile.FileExists (Server.MapPath(fnamezip)) then
    			'response.write "Trovato zip-->"&fnamezip&"
    "
    			vc_flagtrovato="S"
    			fname=fnamezip
    		end if
    
    		if 	vc_flagtrovato="S" then
    
    			'response.write "tipologia -->"&analizza(fname)&"
    "
    
    			Function GetFileSize(filepath)
    				Dim fso, f
    				Set fso = Server.CreateObject("Scripting.FileSystemObject")
    				Set f = fso.GetFile(filepath)
    
    				'Response.Write("La dimensione del file è: ")
    				'Response.Write(FormatNumber(f.Size/1024, 2)&" Kb")
    
    				'response.write "SIZE ---> "&FormatNumber(f.Size/1024, 2)&"
    "
    	%>
    
    			<table border="1">
    				<tr>
    					<th class=testolabel>Nome </th>
    					<th class=testolabel>Dimensione    </th>
    					<th class=testolabel>Tipo</th>
    					<th class=testolabel>Download</th>
    				</tr>
    
    				<tr >
    					<td valign="center" class=testolista>
    							<%=rs("NUME_AVVI")%>
    					</td>
    					<td valign="center" class=testolista align="center">
    							<%= FormatNumber(f.Size/1024, 2) %> Kb
    					</td>
    					<td valign="center" class=testolista>
    							<%= analizza(fname) %></td>
    					<td valign="center" class=testolista align="center">
    				        <img src=images/icons/database.gif border=0>
    			       </td>

    Poi troverò altre soluzioni.
    Spero...

    ciao ciao

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.