Come posso ottenere l'estensione di un file in Java?


484

Giusto per essere chiari, non sto cercando il tipo MIME.

Diciamo che ho il seguente input: /path/to/file/foo.txt

Vorrei un modo per suddividere questo input, in particolare .txtper l'estensione. Esiste un modo integrato per farlo in Java? Vorrei evitare di scrivere il mio parser.


12
Non si sa mai quando arriverà qualche nuova piattaforma che definisce le estensioni come separate da una virgola. Ora devi scrivere codice dipendente dalla piattaforma. I framework Java dovrebbero essere più lungimiranti e avere API per ottenere estensioni in cui scrivono il codice dipendente dalla piattaforma e tu, come utente dell'API, dici semplicemente di ottenere l'estensione.
ArtOfWarfare il

@ArtOfWarfare: OMG. Creiamo un 100MB JRE con le classi di molte migliaia, ma si prega di essere sicuri di non realizzare qualsiasi metodo che ritorna "txt"da "filename.txt"perché alcuni piattaforma da qualche parte potrebbe desiderare di utilizzare "filename,txt".
Eric Duminil,

@EricDuminil "Assicurati di non implementare alcun metodo che restituisca" txt "da" nomefile.txt "" ??? Prova path.substring(path.lastIndexOf("."));..... E sì .. Sono sicuro di non duplicare qualcosa per niente ...
VelocityPulse il

@VelocityPulse Questo è esattamente ciò che mi disturba. Poiché non esiste un modo standard per ottenere l'estensione del file, si ottengono dozzine di risposte errate e implementazioni leggermente diverse. Il codice utilizza 2 metodi (mi sarebbe piaciuto avere un singolo, metodo esplicito), ritorna ".txt"da "filename.txt", che potrebbe non essere il risultato desiderato, e peggio di tutto, non riesce con StringIndexOutOfBoundsExceptioninvece di restituire una stringa vuota se non c'è alcuna estensione.
Eric Duminil,

Risposte:


649

In questo caso, utilizzare FilenameUtils.getExtension da Apache Commons IO

Ecco un esempio di come usarlo (è possibile specificare il percorso completo o solo il nome del file):

String ext1 = FilenameUtils.getExtension("/path/to/file/foo.txt"); // returns "txt"
String ext2 = FilenameUtils.getExtension("bar.exe"); // returns "exe"

Dipendenza da Maven:

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.6</version>
</dependency>

Gradle Groovy DSL

implementation 'commons-io:commons-io:2.6'

Gradle Kotlin DSL

implementation("commons-io:commons-io:2.6")

Altri https://search.maven.org/artifact/commons-io/commons-io/2.6/jar


70
Va notato che restituisce solo "gz" per un file denominato archive.tar.gz.
Zitrax,

106
@Zitrax è perché "gz" è l'estensione del file.
BrainSlugs83

6
@ BrainSlugs83 Quindi cosa significa "tar"?
TuGordoBello,

31
@zhelon .gz sta per file zippato gnu e .tar sta per (t) ape (ar) chives. Quindi .tar.gz è un file tar all'interno di un file zippato gnu, che ha l'estensione .gz.
cirovladimir,

5
Non c'è motivo di portare un'altra libreria per questo semplice compito.
masterwok,

311

Hai davvero bisogno di un "parser" per questo?

String extension = "";

int i = fileName.lastIndexOf('.');
if (i > 0) {
    extension = fileName.substring(i+1);
}

Supponendo che tu abbia a che fare con nomi di file simili a Windows, non qualcosa del genere archive.tar.gz.

A proposito, nel caso in cui una directory possa avere un '.', Ma il nome del file stesso non (come /path/to.a/file), puoi fare

String extension = "";

int i = fileName.lastIndexOf('.');
int p = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));

if (i > p) {
    extension = fileName.substring(i+1);
}

4
Grazie! Certo potresti aver bisogno di un parser / oggetto per questo, se volessi fare più manipolazioni che solo l'estensione ... dì se vuoi solo il percorso, la directory principale, il nome del file (meno l'estensione), ecc. I ' m proveniente da C # e .Net dove abbiamo questo: msdn.microsoft.com/en-us/library/...
Longda

10
Come dici tu, ci sono una serie di cose a cui pensare, oltre a usare l'ingenuo lastIndexOf ("."). Immagino che Apache Commons abbia un metodo per questo, che tenga conto di tutti i piccoli problemi potenziali delicati.
MatrixFrog,

12
Penso che i > 0dovrebbe essere cambiato in i >= 0o i != -1. Questo si occupa di nomi di file come .htaccess.
Pijusn,

8
indipendentemente da quanto sia semplice uno snippet di codice ... devi ancora aggiornarlo / mantenerlo / testarlo / renderlo disponibile come una comoda dipendenza ... molto più facile se ci fosse già una lib che fa tutto questo
Don Cheadle

2
Su più gotcha è se il file termina con un punto. Meglio in una lib. if (i> p && i <(fileName.length () - 1)) {extension = fileName.substring (i + 1);
tgkprog,

97
private String getFileExtension(File file) {
    String name = file.getName();
    int lastIndexOf = name.lastIndexOf(".");
    if (lastIndexOf == -1) {
        return ""; // empty extension
    }
    return name.substring(lastIndexOf);
}

13
Va notato che questo restituisce il '.' anche, quindi l'estensione del tuo file sarà '.txt' in contrapposizione a 'txt' in alcune delle altre risposte
NickEntin

2
Risposta migliore e @NickEntin Commento migliore. Per rimuovere il punto "." dall'estensione del file, può essere codificato come int lastIndexOf = name.lastIndexOf (".") + 1;
Hanzallah Afgan,

11
tale approccio potrebbe non funzionare in alcuni casi, ad esempio /usr/bin/foo.bar/httpconf
Iman Akbari,

8
@ lukasz1985 1. centinaia di pacchetti Linux creano directory con nomi come "init.d", inoltre non è sicuro fare affidamento sul percorso che non ha directory con punti, dato che non è illegale 2. Stavo programmando per Android quindi ho usato SDK metodo che non ricordo ma immagino che stackoverflow.com/a/3571239/2546146 non abbia questo difetto
Iman Akbari

6
@Iman Akbari: getName () restituisce solo il nome del file stesso, che sarebbe "httpconf" nel tuo esempio.
presidente di Dreamspace il

85

Se si utilizza la libreria Guava , è possibile ricorrere alla Filesclasse di utilità. Ha un metodo specifico, getFileExtension(). Per esempio:

String path = "c:/path/to/file/foo.txt";
String ext = Files.getFileExtension(path);
System.out.println(ext); //prints txt

Inoltre puoi anche ottenere il nome file con una funzione simile, getNameWithoutExtension () :

String filename = Files.getNameWithoutExtension(path);
System.out.println(filename); //prints foo

4
Veramente? È una grande biblioteca, piena di utilità. Molti di loro faranno parte di Java8, come la grande funzione Guava .
JeanValjean,

Purtroppo, non tutte le persone possono decidere quali librerie utilizzare. Almeno abbiamo Apache Commons, anche se vecchio.
Lluis Martinez,

1
se vedi il codice sorgente in getFileExtensionrealtà non è un int dotIndex = fileName.lastIndexOf('.'); return (dotIndex == -1) ? "" : fileName.substring(dotIndex + 1)grosso problema. si noti inoltre che è Filescontrassegnato come "instabile" per qualche motivo.
Al-Mothafar,

@Al-Mothafar molte classi sono contrassegnate come instabili (vedi i costruttori multimap), inoltre non capisco perché: sono state rilasciate diverse versioni, ma non è stato modificato nulla.
JeanValjean,

27

Se su Android, puoi usare questo:

String ext = android.webkit.MimeTypeMap.getFileExtensionFromUrl(file.getName());

Nota che questo non funzionerà se la stringa non è codificata (ad esempio contiene uno spazio o un carattere cinese), vedi: stackoverflow.com/a/14321470/1074998
Fruit

14

Per tenere conto dei nomi dei file senza caratteri prima del punto, devi usare quella leggera variazione della risposta accettata:

String extension = "";

int i = fileName.lastIndexOf('.');
if (i >= 0) {
    extension = fileName.substring(i+1);
}

"file.doc" => "doc"
"file.doc.gz" => "gz"
".doc" => "doc"

probabilmente dovrebbe difendersi da "pippo". ingresso.
chrisinmtown,

14

Questo è un metodo testato

public static String getExtension(String fileName) {
    char ch;
    int len;
    if(fileName==null || 
            (len = fileName.length())==0 || 
            (ch = fileName.charAt(len-1))=='/' || ch=='\\' || //in the case of a directory
             ch=='.' ) //in the case of . or ..
        return "";
    int dotInd = fileName.lastIndexOf('.'),
        sepInd = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
    if( dotInd<=sepInd )
        return "";
    else
        return fileName.substring(dotInd+1).toLowerCase();
}

E caso di prova:

@Test
public void testGetExtension() {
    assertEquals("", getExtension("C"));
    assertEquals("ext", getExtension("C.ext"));
    assertEquals("ext", getExtension("A/B/C.ext"));
    assertEquals("", getExtension("A/B/C.ext/"));
    assertEquals("", getExtension("A/B/C.ext/.."));
    assertEquals("bin", getExtension("A/B/C.bin"));
    assertEquals("hidden", getExtension(".hidden"));
    assertEquals("dsstore", getExtension("/user/home/.dsstore"));
    assertEquals("", getExtension(".strange."));
    assertEquals("3", getExtension("1.2.3"));
    assertEquals("exe", getExtension("C:\\Program Files (x86)\\java\\bin\\javaw.exe"));
}

10

Il mio sporco e può essere il più piccolo usando String.replaceAll :

.replaceAll("^.*\\.(.*)$", "$1")

Nota che prima *è avido, quindi afferrerà il maggior numero possibile di caratteri e poi rimarrà solo l'ultimo punto e l'estensione del file.


Questo non riesce se il file non ha estensione.
Zack,

Sì, sfortunatamente, comunque può essere usato per scenari semplici come il rilevamento rapido del tipo di file e come avere un'estensione errata non è molto diverso dal non averne nessuno, oppure si può mettere una condizione if quando il risultato della sostituzione è uguale all'input.
Ebrahim Byagowi,

1
O ancora più breve.replaceAll(".*\\.", "")
Ebrahim Byagowi,

10
String path = "/Users/test/test.txt";
String extension = "";

if (path.contains("."))
     extension = path.substring(path.lastIndexOf("."));

return ".txt"

se vuoi solo "txt", crea path.lastIndexOf(".") + 1


9

Come è ovvio da tutte le altre risposte, non esiste una funzione "incorporata" adeguata. Questo è un metodo sicuro e semplice.

String getFileExtension(File file) {
    if (file == null) {
        return "";
    }
    String name = file.getName();
    int i = name.lastIndexOf('.');
    String ext = i > 0 ? name.substring(i + 1) : "";
    return ext;
}

7

Che ne dici (usando Java 1.5 RegEx):

    String[] split = fullFileName.split("\\.");
    String ext = split[split.length - 1];

6

Se si prevede di utilizzare Apache commons-io, e basta voler controllare l'estensione del file e poi fare qualche operazione, è possibile utilizzare questo , ecco un frammento:

if(FilenameUtils.isExtension(file.getName(),"java")) {
    someoperation();
}

Si noti che questo controllo fa distinzione tra maiuscole e minuscole in base ai documenti.
Babken Vardanyan,

6

Ecco un altro one-liner per Java 8.

String ext = Arrays.stream(fileName.split("\\.")).reduce((a,b) -> b).orElse(null)

Funziona come segue:

  1. Dividi la stringa in una matrice di stringhe usando "."
  2. Converti l'array in un flusso
  3. Utilizzare riduci per ottenere l'ultimo elemento del flusso, ovvero l'estensione del file

4

Che ne dici di JFileChooser? Non è semplice in quanto dovrai analizzarne l'output finale ...

JFileChooser filechooser = new JFileChooser();
File file = new File("your.txt");
System.out.println("the extension type:"+filechooser.getTypeDescription(file));

che è un tipo MIME ...

OK ... Ho dimenticato che non vuoi conoscere il suo tipo MIME.

Codice interessante al seguente link: http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html

/*
 * Get the extension of a file.
 */  
public static String getExtension(File f) {
    String ext = null;
    String s = f.getName();
    int i = s.lastIndexOf('.');

    if (i > 0 &&  i < s.length() - 1) {
        ext = s.substring(i+1).toLowerCase();
    }
    return ext;
}

Domanda correlata: come tagliare un'estensione di file da una stringa in Java?


4

Ecco un metodo che gestisce .tar.gzcorrettamente, anche in un percorso con punti nei nomi di directory:

private static final String getExtension(final String filename) {
  if (filename == null) return null;
  final String afterLastSlash = filename.substring(filename.lastIndexOf('/') + 1);
  final int afterLastBackslash = afterLastSlash.lastIndexOf('\\') + 1;
  final int dotIndex = afterLastSlash.indexOf('.', afterLastBackslash);
  return (dotIndex == -1) ? "" : afterLastSlash.substring(dotIndex + 1);
}

afterLastSlashè stato creato per rendere la ricerca afterLastBackslashpiù veloce poiché non dovrà cercare l'intera stringa se ci sono delle barre.

L' char[]interno dell'originale Stringviene riutilizzato, non aggiungendo immondizia lì e la JVM noterà probabilmente che afterLastSlashè immediatamente immondizia per metterlo nello stack anziché nell'heap .


questo metodo viene copiato dal codice sorgente di Guava, è necessario menzionarlo.
impazzito

1
Non l'ho copiato. Se è nel codice sorgente di Guava, lo hanno copiato da qui. Forse avvisali.
Olathe,

scusate per il fatto che non è identico a proposito, quindi voi e lo sviluppatore di Guava avete la stessa idea.
humazed

2
Davvero "gz" è l'estensione corretta da restituire. Se il codice chiamante può anche gestire "tar", allora dovrebbe anche controllare, esterno a una getExtensionfunzione. Se il nome file dell'utente è, "my zip. don't touch.tar.gz"questo metodo restituirà l'estensione errata.
intrepidis,

2
// Modified from EboMike's answer

String extension = "/path/to/file/foo.txt".substring("/path/to/file/foo.txt".lastIndexOf('.'));

l'estensione dovrebbe contenere ".txt" quando viene eseguita.


13
Si arresta in modo anomalo se il nome non ha un'estensione.
EboMike,

2

Ecco la versione con Opzionale come valore di ritorno (perché non puoi essere sicuro che il file abbia un'estensione) ... anche i controlli di integrità ...

import java.io.File;
import java.util.Optional;

public class GetFileExtensionTool {

    public static Optional<String> getFileExtension(File file) {
        if (file == null) {
            throw new NullPointerException("file argument was null");
        }
        if (!file.isFile()) {
            throw new IllegalArgumentException("getFileExtension(File file)"
                    + " called on File object that wasn't an actual file"
                    + " (perhaps a directory or device?). file had path: "
                    + file.getAbsolutePath());
        }
        String fileName = file.getName();
        int i = fileName.lastIndexOf('.');
        if (i > 0) {
            return Optional.of(fileName.substring(i + 1));
        } else {
            return Optional.empty();
        }
    }
}

2

Che ne dici della versione REGEX :

static final Pattern PATTERN = Pattern.compile("(.*)\\.(.*)");

Matcher m = PATTERN.matcher(path);
if (m.find()) {
    System.out.println("File path/name: " + m.group(1));
    System.out.println("Extention: " + m.group(2));
}

o con estensione null supportata:

static final Pattern PATTERN =
    Pattern.compile("((.*\\" + File.separator + ")?(.*)(\\.(.*)))|(.*\\" + File.separator + ")?(.*)");

class Separated {
    String path, name, ext;
}

Separated parsePath(String path) {
    Separated res = new Separated();
    Matcher m = PATTERN.matcher(path);
    if (m.find()) {
        if (m.group(1) != null) {
            res.path = m.group(2);
            res.name = m.group(3);
            res.ext = m.group(5);
        } else {
            res.path = m.group(6);
            res.name = m.group(7);
        }
    }
    return res;
}


Separated sp = parsePath("/root/docs/readme.txt");
System.out.println("path: " + sp.path);
System.out.println("name: " + sp.name);
System.out.println("Extention: " + sp.ext);

risultato per * nix:
percorso: / root / docs /
nome: readme
Estensione: txt

per windows, parsePath ("c: \ windows \ readme.txt"):
percorso: c: \ windows \
name: readme
Estensione: txt


1
String extension = com.google.common.io.Files.getFileExtension("fileName.jpg");

1

Qui ho fatto un piccolo metodo (comunque non così sicuro e non controlla molti errori), ma se sei solo tu a programmare un programma java generale, questo è più che sufficiente per trovare il tipo di file. Questo non funziona per tipi di file complessi, ma quelli normalmente non sono usati così tanto.

    public static String getFileType(String path){
       String fileType = null;
       fileType = path.substring(path.indexOf('.',path.lastIndexOf('/'))+1).toUpperCase();
       return fileType;
}

OP è alla ricerca di un metodo integrato
Panther

(1) È necessario utilizzare in lastIndexOfmodo che i nomi dei file come john.smith.report.docsiano trattati correttamente. (2) È necessario gestire correttamente i casi in cui non è presente alcuna estensione. Questo metodo ritorna ABC/XYZper un percorso simile abc/xyz, che non ha alcun senso. Avrebbe più senso tornare ""o null. (3) Il separatore di file non è sempre /.
Radiodef,

1

Ottenere l'estensione del file dal nome del file

/**
 * The extension separator character.
 */
private static final char EXTENSION_SEPARATOR = '.';

/**
 * The Unix separator character.
 */
private static final char UNIX_SEPARATOR = '/';

/**
 * The Windows separator character.
 */
private static final char WINDOWS_SEPARATOR = '\\';

/**
 * The system separator character.
 */
private static final char SYSTEM_SEPARATOR = File.separatorChar;

/**
 * Gets the extension of a filename.
 * <p>
 * This method returns the textual part of the filename after the last dot.
 * There must be no directory separator after the dot.
 * <pre>
 * foo.txt      --> "txt"
 * a/b/c.jpg    --> "jpg"
 * a/b.txt/c    --> ""
 * a/b/c        --> ""
 * </pre>
 * <p>
 * The output will be the same irrespective of the machine that the code is running on.
 *
 * @param filename the filename to retrieve the extension of.
 * @return the extension of the file or an empty string if none exists.
 */
public static String getExtension(String filename) {
    if (filename == null) {
        return null;
    }
    int index = indexOfExtension(filename);
    if (index == -1) {
        return "";
    } else {
        return filename.substring(index + 1);
    }
}

/**
 * Returns the index of the last extension separator character, which is a dot.
 * <p>
 * This method also checks that there is no directory separator after the last dot.
 * To do this it uses {@link #indexOfLastSeparator(String)} which will
 * handle a file in either Unix or Windows format.
 * <p>
 * The output will be the same irrespective of the machine that the code is running on.
 *
 * @param filename  the filename to find the last path separator in, null returns -1
 * @return the index of the last separator character, or -1 if there
 * is no such character
 */
public static int indexOfExtension(String filename) {
    if (filename == null) {
        return -1;
    }
    int extensionPos = filename.lastIndexOf(EXTENSION_SEPARATOR);
    int lastSeparator = indexOfLastSeparator(filename);
    return (lastSeparator > extensionPos ? -1 : extensionPos);
}

/**
 * Returns the index of the last directory separator character.
 * <p>
 * This method will handle a file in either Unix or Windows format.
 * The position of the last forward or backslash is returned.
 * <p>
 * The output will be the same irrespective of the machine that the code is running on.
 *
 * @param filename  the filename to find the last path separator in, null returns -1
 * @return the index of the last separator character, or -1 if there
 * is no such character
 */
public static int indexOfLastSeparator(String filename) {
    if (filename == null) {
        return -1;
    }
    int lastUnixPos = filename.lastIndexOf(UNIX_SEPARATOR);
    int lastWindowsPos = filename.lastIndexOf(WINDOWS_SEPARATOR);
    return Math.max(lastUnixPos, lastWindowsPos);
}

Crediti

  1. Copiato dalla classe FileNameUtils di Apache - http://grepcode.com/file/repo1.maven.org/maven2/commons-io/commons-io/1.3.2/org/apache/commons/io/FilenameUtils.java#FilenameUtils. GetExtension% 28java.lang.String% 29

1

Senza l'uso di alcuna libreria, è possibile utilizzare la suddivisione del metodo String come segue:

        String[] splits = fileNames.get(i).split("\\.");

        String extension = "";

        if(splits.length >= 2)
        {
            extension = splits[splits.length-1];
        }

0

Solo un'alternativa basata su espressioni regolari. Non così veloce, non così buono.

Pattern pattern = Pattern.compile("\\.([^.]*)$");
Matcher matcher = pattern.matcher(fileName);

if (matcher.find()) {
    String ext = matcher.group(1);
}

0

Ho trovato un modo migliore per trovare l'estensione mescolando tutte le risposte sopra

public static String getFileExtension(String fileLink) {

        String extension;
        Uri uri = Uri.parse(fileLink);
        String scheme = uri.getScheme();
        if (scheme != null && scheme.equals(ContentResolver.SCHEME_CONTENT)) {
            MimeTypeMap mime = MimeTypeMap.getSingleton();
            extension = mime.getExtensionFromMimeType(CoreApp.getInstance().getContentResolver().getType(uri));
        } else {
            extension = MimeTypeMap.getFileExtensionFromUrl(fileLink);
        }

        return extension;
    }

public static String getMimeType(String fileLink) {
        String type = CoreApp.getInstance().getContentResolver().getType(Uri.parse(fileLink));
        if (!TextUtils.isEmpty(type)) return type;
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getMimeTypeFromExtension(FileChooserUtil.getFileExtension(fileLink));
    }

0

Mi piace la semplicità della risposta di spectre , e in uno dei suoi commenti è collegato un collegamento a un'altra risposta che corregge i punti nei percorsi dei file, su un'altra domanda, fatta da EboMike .

Senza implementare una sorta di API di terze parti, suggerisco:

private String getFileExtension(File file) {

    String name = file.getName().substring(Math.max(file.getName().lastIndexOf('/'),
            file.getName().lastIndexOf('\\')) < 0 ? 0 : Math.max(file.getName().lastIndexOf('/'),
            file.getName().lastIndexOf('\\')));
    int lastIndexOf = name.lastIndexOf(".");
    if (lastIndexOf == -1) {
        return ""; // empty extension
    }
    return name.substring(lastIndexOf + 1); // doesn't return "." with extension
}

Qualcosa del genere può essere utile, per esempio, in uno qualsiasi dei writemetodi di ImageIO , in cui deve essere passato il formato del file.

Perché utilizzare un'intera API di terze parti quando puoi fare il fai-da-te?


0

Questa particolare domanda mi ha dato molti problemi, poi ho trovato una soluzione molto semplice per questo problema che sto postando qui.

file.getName().toLowerCase().endsWith(".txt");

Questo è tutto.


3
OP ha bisogno di un modo per estrarre l'estensione, non per testarne una.
Predrag Manojlovic,

in realtà qualunque cosa tu stia sviluppando nella maggior parte dei casi devi occuparti solo di un particolare tipo di file ... quindi se il tuo problema arriva in quest'area questo ti aiuterà.
Vikram Bhardwaj,

4
Il che non risponde alle sue esigenze
Predrag Manojlovic,

2
Questa non è una risposta alla domanda, ma era proprio quello che stavo cercando.
Ediolot,

-1

prova questo.

String[] extension = "adadad.adad.adnandad.jpg".split("\\.(?=[^\\.]+$)"); // ['adadad.adad.adnandad','jpg']
extension[1] // jpg

-1
  @Test
    public void getFileExtension(String fileName){
      String extension = null;
      List<String> list = new ArrayList<>();
      do{
          extension =  FilenameUtils.getExtension(fileName);
          if(extension==null){
              break;
          }
          if(!extension.isEmpty()){
              list.add("."+extension);
          }
          fileName = FilenameUtils.getBaseName(fileName);
      }while (!extension.isEmpty());
      Collections.reverse(list);
      System.out.println(list.toString());
    }

-4

Java ha un modo integrato di gestirlo , nella classe java.nio.file.Files , che potrebbe funzionare per le tue esigenze:

File f = new File("/path/to/file/foo.txt");
String ext = Files.probeContentType(f.toPath());
if(ext.equalsIgnoreCase("txt")) do whatever;

Si noti che questo metodo statico utilizza le specifiche trovate qui per recuperare il "tipo di contenuto", che può variare.


28
Questo non è corretto Il tipo restituito per probeContentType è il tipo di contenuto Mime, non l'estensione del file. Di solito non corrisponde all'estensione. Questo sarebbe anche piuttosto lento in un browser di file, poiché in realtà apre il file per determinare il tipo.
Charles,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.