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

Da Gambas-it.org - Wikipedia.
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 rispettivamente nei file di sistema "''/usr/share/mime/globs''" e "''/etc/mime.types''".
+
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:
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim percorsofile, ris As String
 
   Dim percorsofile, ris As String
 
      
 
      
 
  <FONT Color=gray>' ''Specifica il file di cui cercare il corrispondente "mime-type":''</font>
 
  <FONT Color=gray>' ''Specifica il file di cui cercare il corrispondente "mime-type":''</font>
  percorsofile = "<FONT Color=gray>''/percorso/del/file''</font>"
+
  percorsofile = "<FONT Color=darkgreen>''/percorso/del/file''</font>"
 
    
 
    
  ris = ControllaGlobs(percorsofile)
+
  ris = ControllaGlobs(percorsofile)
  If IsNull(ris) Then
+
  If IsNull(ris) Then
    ris = ControllaEtc(percorsofile)
+
    ris = ControllaEtc(percorsofile)
  Endif
+
  Endif
 
    
 
    
  If IsNull(ris) Then ris = "L'estensione del file non è presente nel database dei 'mime-type' !"
+
  If IsNull(ris) Then ris = "L'estensione del file non è presente nel database dei 'mime-type' !"
 
      
 
      
  Print ris
+
  Print ris
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Private''' Function ControllaGlobs(perc As String) As String
+
  Private Function ControllaGlobs(perc As String) As String
 
    
 
    
 
   Dim gl, est, rit As String
 
   Dim gl, est, rit As String
Riga 28: Riga 41:
 
    
 
    
 
  <FONT Color=gray>' ''Dapprima verifica il mime-type nel file "/usr/share/mime/globs":''</font>
 
  <FONT Color=gray>' ''Dapprima verifica il mime-type nel file "/usr/share/mime/globs":''</font>
  gl = File.Load("/usr/share/mime/globs")
+
  gl = File.Load("/usr/share/mime/globs")
 
    
 
    
  est = ":*." & LCase(File.Ext(perc))
+
  est = ":*." & LCase(File.Ext(perc))
 
    
 
    
 
  <FONT Color=gray>' ''Verifica se l'estensione del file corrente sia comunque 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
 
  <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>' ''Verifica quale riga del file "globs" termina con i caratteri della 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 ss[c] Ends 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>
        rit = Scan(ss[c], "*:*")[0]
+
        rit = Scan(ss[c], "*:*")[0]
        Break
+
        Break
      Endif
+
      Endif
    Next
+
    Next
  Endif
+
  Endif
 
    
 
    
  Return rit
+
  Return rit
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Private''' Function ControllaEtc(perc As String) As String
+
  Private Function ControllaEtc(perc As String) As String
 
    
 
    
 
   Dim et, est, rit As String
 
   Dim et, est, rit As String
Riga 58: Riga 71:
 
    
 
    
 
  <FONT Color=gray>' ''Quindi verifica il mime-type nel file "/etc/mime.types":''</font>
 
  <FONT Color=gray>' ''Quindi verifica il mime-type nel file "/etc/mime.types":''</font>
  et = File.Load("/etc/mime.types")
+
  et = File.Load("/etc/mime.types")
  et = Replace(et, Chr(&09), Chr(&20))
+
  et = Replace(et, Chr(&09), Chr(&20))
 
    
 
    
  est = LCase(File.Ext(perc))
+
  est = LCase(File.Ext(perc))
 
    
 
    
 
  <FONT Color=gray>' ''Verifica se l'estensione del file corrente sia comunque presente nel file "/etc/mime.types":''</font>
 
  <FONT Color=gray>' ''Verifica se l'estensione del file corrente sia comunque presente nel file "/etc/mime.types":''</font>
  If InStr(et, est) Then
+
  If InStr(et, est) Then
 
  <FONT Color=gray>' ''Individua ogni riga componente il contenuto testuale del file "/etc/mime.types":''</font>
 
  <FONT Color=gray>' ''Individua ogni riga componente il contenuto testuale del file "/etc/mime.types":''</font>
    ss = Split(et, "\n")
+
    ss = Split(et, "\n")
    For c = 0 To ss.Max
+
    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>
 
  <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
+
      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>
 
  <FONT Color=gray>' ''Estrapola la prima parte della riga, ossia quella relativa al "mime-type" correlato all'estensione:''</font>
        rit = Scan(ss[c], "* *")[0]
+
        rit = Scan(ss[c], "* *")[0]
        Break
+
        Break
      Endif
+
      Endif
    Next
+
    Next
  Endif
+
  Endif
 
    
 
    
  Return rit
+
  Return rit
 
    
 
    
  '''End'''
+
  End

Versione delle 08:58, 1 ott 2023

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