Differenze tra le versioni di "Conoscere il mime-type di un file mediante le sole risorse di Gambas"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
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''". | + | 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: | ||
− | + | 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=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 | |
− | + | Private Function ControllaGlobs(perc As String) As String | |
Dim gl, est, rit As String | Dim gl, est, rit As String | ||
Riga 28: | Riga 43: | ||
<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") | |
− | + | 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 | |
<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") | |
− | + | 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 | |
<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] | |
− | + | Break | |
− | + | Endif | |
− | + | Next | |
− | + | Endif | |
− | + | Return rit | |
− | + | End | |
− | + | Private Function ControllaEtc(perc As String) As String | |
Dim et, est, rit As String | Dim et, est, rit As String | ||
Riga 58: | Riga 73: | ||
<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 = 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> | <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> | <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> | <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> | <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 |
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