Differenze tra le versioni di "Conoscere il mime-type di un file mediante le sole risorse di Gambas"

Da Gambas-it.org - Wikipedia.
(Creata pagina con "Per conoscere il "''mime-type''" di un determinato file con le sole risorse native di Gambas, si potrà cercare la corrispondenza fra l'estensione di questo file con il ''mime...")
 
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per conoscere il "''mime-type''" di un determinato file con le sole risorse native di Gambas, si potrà cercare la corrispondenza fra l'estensione di questo file con il ''mime-type'' riportata nell'ampia lista contenuta nel file di sistema "''/usr/share/mime/globs''".
+
Il "''mime-type''" di un file consente di identificare il ''tipo'' del file.
 +
 
 +
Per conoscere il "''mime-type''" di un determinato file con le sole risorse native di Gambas, si potranno utilizzare almeno due modalità.
 +
 
 +
==Uso la Proprietà ".Type" del Metodo ".FromFile()" della Classe ''DesktopMime''==
 +
In questo caso è necessario attivare anche il Componente ''gb.desktop''.
 +
 
 +
Mostriamo un esempio pratico:
 +
Public Sub Form_Open()
 +
 +
  Print DesktopMime.FromFile("<FONT Color=gray>''/percorso/del/file''</font>").Type
 +
 +
End
 +
 
 +
==Con apposito algoritmo==
 +
Altresì si potrà cercare la corrispondenza fra l'estensione di questo file con il ''mime-type'' riportata nell'ampia lista contenuta rispettivamente nei file di sistema "''/usr/share/mime/globs'' " e "''/etc/mime.types'' ".
  
 
Potremo adottare il seguente codice:
 
Potremo adottare il seguente codice:
  Private Const globs As String = "/usr/share/mime/globs"
+
  Public Sub Main()
 +
 
 +
  Dim percorsofile, ris As String
 +
   
 +
<FONT Color=gray>' ''Specifica il file di cui cercare il corrispondente "mime-type":''</font>
 +
  percorsofile = "<FONT Color=darkgreen>''/percorso/del/file''</font>"
 +
 
 +
  ris = ControllaGlobs(percorsofile)
 +
  If IsNull(ris) Then
 +
    ris = ControllaEtc(percorsofile)
 +
  Endif
 +
 
 +
  If IsNull(ris) Then ris = "L'estensione del file non è presente nel database dei 'mime-type' !"
 +
   
 +
  Print ris
 +
 
 +
End
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Private Function ControllaGlobs(perc As String) As String
 
    
 
    
   Dim percorsofile, gl, ris, est As String
+
   Dim gl, est, rit As String
 
   Dim ss As String[]
 
   Dim ss As String[]
 
   Dim c As Short
 
   Dim c As Short
 
    
 
    
  <FONT Color=gray>' ''Specifica il file di cui cercare il corrispondente "mime-type":''</font>
+
  <FONT Color=gray>' ''Dapprima verifica il mime-type nel file "/usr/share/mime/globs":''</font>
  percorsofile = "<FONT Color=gray>''/percorso/del/file''</font>"
+
  gl = File.Load("/usr/share/mime/globs")
 
    
 
    
  gl = File.Load(globs)
+
  est = ":*." & LCase(File.Ext(perc))
  ris = "L'estensione del file non è presente nel database dei 'mime-type' !"
 
  est = ":*." & LCase(File.Ext(percorsofile))
 
 
    
 
    
  <FONT Color=gray>' ''Verifica se l'estensione del file corrente è presente nel file "/usr/share/mime/globs":''</font>
+
  <FONT Color=gray>' ''Verifica se l'estensione del file corrente sia comunque presente nel file "/usr/share/mime/globs":''</font>
  If InStr(gl, est) Then
+
  If InStr(gl, est) Then
    est &= Chr(&20)
 
<FONT Color=gray>' ''Fa precedere ciascun carattere escape "\n" da uno spazio per evitare che venga riportato un 'mime-type'''
 
' ''relativo ad un'estensione analoga, ma non esattamente quella posseduta dal file ricercato:''</font>
 
    gl = Replace(gl, "\n", " \n")
 
 
  <FONT Color=gray>' ''Individua ogni riga componente il contenuto testuale del file "/usr/share/mime/globs":''</font>
 
  <FONT Color=gray>' ''Individua ogni riga componente il contenuto testuale del file "/usr/share/mime/globs":''</font>
    ss = Split(gl, "\n")
+
    ss = Split(gl, "\n")
    For c = 0 To ss.Max
+
    For c = 0 To ss.Max
  <FONT Color=gray>' ''In ciascuna riga del file "globs" verifica se esiste la stringa contenuta nella variabile "est":''</font>
+
  <FONT Color=gray>' ''Verifica quale riga del file "globs" termina con i caratteri della stringa contenuta nella variabile "est":''</font>
      If InStr(ss[c], est) Then
+
      If ss[c] Ends est Then
 
  <FONT Color=gray>' ''Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:''</font>
 
  <FONT Color=gray>' ''Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:''</font>
        ris = Scan(ss[c], "*:*")[0]
+
        rit = Scan(ss[c], "*:*")[0]
      Endif
+
        Break
    Next
+
      Endif
   Endif
+
    Next
   
+
  Endif
  Print ris
+
 
 +
  Return rit
 +
 
 +
End
 +
 +
 +
Private Function ControllaEtc(perc As String) As String
 +
 
 +
  Dim et, est, rit As String
 +
  Dim ss As String[]
 +
  Dim c As Short
 +
 
 +
<FONT Color=gray>' ''Quindi verifica il mime-type nel file "/etc/mime.types":''</font>
 +
  et = File.Load("/etc/mime.types")
 +
  et = Replace(et, Chr(&09), Chr(&20))
 +
    
 +
  est = LCase(File.Ext(perc))
 +
 
 +
<FONT Color=gray>' ''Verifica se l'estensione del file corrente sia comunque presente nel file "/etc/mime.types":''</font>
 +
  If InStr(et, est) Then
 +
<FONT Color=gray>' ''Individua ogni riga componente il contenuto testuale del file "/etc/mime.types":''</font>
 +
    ss = Split(et, "\n")
 +
    For c = 0 To ss.Max
 +
<FONT Color=gray>' ''Verifica quale riga del file "mime.types" possiede i caratteri della stringa, contenuta nella variabile "est", anticipati da almeno uno spazio:''</font>
 +
      If ss[c] Like "* " & est & "*" Then
 +
<FONT Color=gray>' ''Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:''</font>
 +
        rit = Scan(ss[c], "* *")[0]
 +
        Break
 +
      Endif
 +
    Next
 +
  Endif
 +
 
 +
  Return rit
 
    
 
    
  '''End'''
+
  End

Versione attuale delle 09:36, 1 ott 2023

Il "mime-type" di un file consente di identificare il tipo del file.

Per conoscere il "mime-type" di un determinato file con le sole risorse native di Gambas, si potranno utilizzare almeno due modalità.

Uso la Proprietà ".Type" del Metodo ".FromFile()" della Classe DesktopMime

In questo caso è necessario attivare anche il Componente gb.desktop.

Mostriamo un esempio pratico:

Public Sub Form_Open()

 Print DesktopMime.FromFile("/percorso/del/file").Type

End

Con apposito algoritmo

Altresì si potrà cercare la corrispondenza fra l'estensione di questo file con il mime-type riportata nell'ampia lista contenuta rispettivamente nei file di sistema "/usr/share/mime/globs " e "/etc/mime.types ".

Potremo adottare il seguente codice:

Public Sub Main()
 
 Dim percorsofile, ris As String
   
' Specifica il file di cui cercare il corrispondente "mime-type":
 percorsofile = "/percorso/del/file"
  
 ris = ControllaGlobs(percorsofile)
 If IsNull(ris) Then
   ris = ControllaEtc(percorsofile)
 Endif
  
 If IsNull(ris) Then ris = "L'estensione del file non è presente nel database dei 'mime-type' !"
    
 Print ris
  
End


Private Function ControllaGlobs(perc As String) As String
 
 Dim gl, est, rit As String
 Dim ss As String[]
 Dim c As Short
 
' Dapprima verifica il mime-type nel file "/usr/share/mime/globs":
 gl = File.Load("/usr/share/mime/globs")
  
 est = ":*." & LCase(File.Ext(perc))
  
' Verifica se l'estensione del file corrente sia comunque presente nel file "/usr/share/mime/globs":
 If InStr(gl, est) Then
' Individua ogni riga componente il contenuto testuale del file "/usr/share/mime/globs":
   ss = Split(gl, "\n")
   For c = 0 To ss.Max
' Verifica quale riga del file "globs" termina con i caratteri della stringa contenuta nella variabile "est":
     If ss[c] Ends est Then
' Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:
       rit = Scan(ss[c], "*:*")[0]
       Break
     Endif
   Next
 Endif
  
 Return rit
  
End


Private Function ControllaEtc(perc As String) As String
 
 Dim et, est, rit As String
 Dim ss As String[]
 Dim c As Short
 
' Quindi verifica il mime-type nel file "/etc/mime.types":
 et = File.Load("/etc/mime.types")
 et = Replace(et, Chr(&09), Chr(&20))
  
 est = LCase(File.Ext(perc))
  
' Verifica se l'estensione del file corrente sia comunque presente nel file "/etc/mime.types":
 If InStr(et, est) Then
' Individua ogni riga componente il contenuto testuale del file "/etc/mime.types":
   ss = Split(et, "\n")
   For c = 0 To ss.Max
' Verifica quale riga del file "mime.types" possiede i caratteri della stringa, contenuta nella variabile "est", anticipati da almeno uno spazio:
     If ss[c] Like "* " & est & "*" Then
' Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:
       rit = Scan(ss[c], "* *")[0]
       Break
     Endif
   Next
 Endif
 
 Return rit
  
End