Conoscere il mime-type di un file mediante le sole risorse di Gambas
Da Gambas-it.org - Wikipedia.
Versione del 4 giu 2017 alle 11:50 di Vuott (Discussione | contributi)
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".
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