Quale tipo MIME dovrei usare per CSV?


454

Ho visto application/csvusato e anche text/csv.

Qual è la differenza? C'è una differenza? Importa se la richiesta corrisponde a qualcosa disponibile? Sono intercambiabili?

Risposte:


623

RFC 7111

C'è un RFC che lo copre e dice di usare text/csv.

Questo RFC aggiorna RFC 4180.


Eccellere

Recentemente ho scoperto un mimetype esplicito per l'applicazione Excel / vnd.ms-excel. È stato registrato con IANA nel '96. Nota le preoccupazioni sollevate riguardo all'essere in balia del mittente e alla violazione della tua macchina .

Tipo di supporto: application / vnd.ms-excel

Nome Microsoft Excel (tm)

Parametri richiesti: nessuno

Parametri opzionali: nome

Considerazioni sulla codifica: base64 preferito

Considerazioni sulla sicurezza: come per la maggior parte dei tipi di applicazione, questi dati devono essere interpretati da un programma che comprende i dati sul sistema del destinatario. I destinatari devono comprendere che sono in "balia" del mittente quando ricevono questo tipo di dati, poiché i dati verranno eseguiti sul loro sistema e la sicurezza delle loro macchine può essere violata.

OID {org-id ms-files (4) ms-excel (3)}

Foglio di calcolo del tipo di oggetto

Commenti Questo tipo di supporto / OID viene utilizzato per identificare genericamente Microsoft Excel (ovvero, indipendentemente dalla versione, dal sottotipo o dal formato della piattaforma).

Non sapevo che le estensioni del fornitore erano consentite. Dai un'occhiata a questa risposta per saperne di più - grazie a Starbeamrainbowlabs per il riferimento.


39
CSV è un formato di file di testo, perché Excel dovrebbe avere qualcosa a che fare con esso o mi sto perdendo qualcosa?
JimmyPena,

25
Il fatto che un programma apra un tipo di file non ha nulla a che fare con il tipo MIME associato di quel tipo di file.
Pablo Pazos,

7
@Pablo Ho Excel installato su un computer Windows e la creazione di un CSV in Notepad ++ assegnerà un tipo di applicazione MIME / vnd.ms-excel. Provalo tu stesso e controlla il tuo tipo MIME su mime.ritey.com
pjd

20
Notepad ++ non "assegna" alcun tipo di mime, il servizio che stai utilizzando lo sta assegnando.
Pablo Pazos,

14
Wow, molte persone si fanno male per la menzione vnd.ms-excel. +1, ho pensato che fosse una nota
Wesley Smith il

95

Dovresti usare "text / csv" secondo RFC 4180 .


1
"Text / csv" accetta anche i file ".txt"? Sto lavorando per applicare la convalida sul lato server per accettare solo i tipi di file ".csv". Ma anche i file ".txt" vengono accettati. Conferma.
Sukanya Pa

1
scusa ma non ho ancora visto la tua domanda. RFC 4180 si assicura che l'estensione dovrebbe essere .csv. Tuttavia, potresti saperlo, non è un requisito rigoroso. È possibile interrompere l'implementazione dell'RFC 4180, ma personalmente non lo farei, perché disturba la leggibilità dell'applicazione.
Smokefoot,

47

Comportamento strano con MS Excel: se esporto in "formato testuale, separato da virgole ( csv)" questo è il tipo mime che ottengo dopo il caricamento sul mio server web:

[name] => data.csv
[type] => application/vnd.ms-excel

Quindi Microsoft sembra fare di nuovo le proprie cose, indipendentemente dagli standard esistenti: https://en.wikipedia.org/wiki/Comma-separated_values


4
Non puoi davvero fidarti del tipo mime inviato dai client web, è solo una guida in generale.
Chris Seufert,

5
Ciò è dovuto alla configurazione del web server che mappa l'estensione del file sul tipo mime. Microsofts IIS dovrebbe usare il registro dei server per questo che è popolato dall'installazione di Excel se è installato sul server web.
Andrew Russell,

5
Bene ... Considerando che lo "standard esistente" ha deciso di ignorare ciò che era già in uso quando hanno deciso di definire CSV in RFC 4180, che è stato scritto nell'ottobre 2005, sarebbe sciocco incolpare Microsoft per non saltare nel futuro a vedi cosa decide l'ente normativo e poi usalo quando hanno scritto Excel per la prima volta nel 1985. Quale versione di Excel stai installando?
Robert McKee,

1
Oltre a tutto il resto, Excel manipolerà i valori dei campi in un file CSV.
Ronnie Overby, il

35

I miei utenti sono autorizzati a caricare file CSV text/csve application/csvnon sono ancora presenti. Questi sono quelli identificati tramite finfo () :

text/plain
text/x-csv

E questi sono quelli trasmessi attraverso il browser:

text/plain
application/vnd.ms-excel
text/x-csv

I seguenti tipi non venivano visualizzati, ma potevano:

application/csv
application/x-csv
text/csv
text/comma-separated-values
text/x-comma-separated-values
text/tab-separated-values

1
I browser indovinano cosa inviare come tipo MIME di un file durante il caricamento. Puoi rifiutare quelli di cui non vuoi avere a che fare, ma controllare con attenzione il contenuto effettivo del file è l'unico modo per essere sicuro di ciò che è stato caricato.
Tetsujin no Oni,

i valori text / separati da tabulazione non sono tecnicamente file CSV; o vuoi dire che puoi anche ottenerlo anche per i dati separati da virgola?
Arthur,

@Arthur Sentiti libero di utilizzare una categoria di file TSV aggiuntiva. Ignoro gli altri termini perché molti programmi creano un file con estensione .csv indipendentemente dal delimitatore utilizzato e PHP - come linguaggio lato server più utilizzato - usa il termine CSV anche nelle sue funzioni. Chiamalo "file separato da caratteri" e stai bene;)
mgutt

0

Per chiunque abbia problemi con l'API di Google mimeType per i file * .csv. Ho trovato l'elenco dei tipi MIME per i file di documenti API di google (guarda il risultato snipped)

<table border="1"><thead><tr><th>Google Doc Format</th><th>Conversion Format</th><th>Corresponding MIME type</th></tr></thead><tbody><tr><td>Documents</td><td>HTML</td><td>text/html</td></tr><tr></tr><tr><td></td><td>HTML (zipped)</td><td>application/zip</td></tr><tr><td></td><td>Plain text</td><td>text/plain</td></tr><tr><td></td><td>Rich text</td><td>application/rtf</td></tr><tr><td></td><td>Open Office doc</td><td>application/vnd.oasis.opendocument.text</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>MS Word document</td><td>application/vnd.openxmlformats-officedocument.wordprocessingml.document</td></tr><tr><td></td><td>EPUB</td><td>application/epub+zip</td></tr><tr><td>Spreadsheets</td><td>MS Excel</td><td>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</td></tr><tr><td></td><td>Open Office sheet</td><td>application/x-vnd.oasis.opendocument.spreadsheet</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>CSV (first sheet only)</td><td>text/csv</td></tr><tr><td></td><td>TSV (first sheet only)</td><td>text/tab-separated-values</td></tr><tr><td></td><td>HTML (zipped)</td><td>application/zip</td></tr><tr></tr><tr><td>Drawings</td><td>JPEG</td><td>image/jpeg</td></tr><tr><td></td><td>PNG</td><td>image/png</td></tr><tr><td></td><td>SVG</td><td>image/svg+xml</td></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td>Presentations</td><td>MS PowerPoint</td><td>application/vnd.openxmlformats-officedocument.presentationml.presentation</td></tr><tr><td></td><td>Open Office presentation</td><td>application/vnd.oasis.opendocument.presentation</td></tr><tr></tr><tr><td></td><td>PDF</td><td>application/pdf</td></tr><tr><td></td><td>Plain text</td><td>text/plain</td></tr><tr><td>Apps Scripts</td><td>JSON</td><td>application/vnd.google-apps.script+json</td></tr></tbody></table>

Fonte qui: https://developers.google.com/drive/v3/web/manage-downloads#downloading_google_documents la tabella sotto: "I formati di Google Doc e i tipi MIME di esportazione supportati si mappano l'un l'altro come segue"

C'è anche un altro elenco

<table border="1"><thead><tr><th>MIME Type</th><th>Description</th></tr></thead><tbody><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>audio</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>document</span></code></td><td>Google Docs</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>drawing</span></code></td><td>Google Drawing</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>file</span></code></td><td>Google Drive file</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>folder</span></code></td><td>Google Drive folder</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>form</span></code></td><td>Google Forms</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>fusiontable</span></code></td><td>Google Fusion Tables</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>map</span></code></td><td>Google My Maps</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>photo</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>presentation</span></code></td><td>Google Slides</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>script</span></code></td><td>Google Apps Scripts</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>site</span></code></td><td>Google Sites</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>spreadsheet</span></code></td><td>Google Sheets</td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>unknown</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>video</span></code></td><td></td></tr><tr><td><code><span>application/vnd.<wbr>google-apps.<wbr>drive-sdk</span></code></td><td>3rd party shortcut</td></tr></tbody></table>

Fonte qui: https://developers.google.com/drive/v3/web/mime-types

Ma il primo è stato più utile per il mio caso d'uso ..

Buona codifica;)


Le regole di StackOverflow devono includere le risposte inline link ad altre piattaforme.
paul_h

@paul_h Vorrei, ma per favore dimmi come formattare quelle tabelle in una forma ragionevole per SO, perché SO non supporta le tabelle in questo momento.
Luckylooke,

1
@paul_h Ho trovato la strada, spero che ti piaccia;)
Luckylooke,

Più uno a causa delle tabelle piuttosto formattate :)
Stijn de Witt
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.