Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTML Input="file" Accept Attribute File Type (CSV)

I have a file upload object on my page:

<input type="file" ID="fileSelect" /> 

with the following excel files on my desktop:

  1. file1.xlsx
  2. file1.xls
  3. file.csv

I want the file upload to ONLY show .xlsx, .xls, & .csv files.

Using the accept attribute, I found these content-types took care of .xlsx & .xls extensions...

accept= application/vnd.openxmlformats-officedocument.spreadsheetml.sheet (.XLSX)

accept= application/vnd.ms-excel (.XLS)

However, I cannot find the correct content-type for an Excel CSV file! Any suggestions?

EXAMPLE: http://jsfiddle.net/LzLcZ/

like image 526
Dom Avatar asked Aug 06 '12 17:08

Dom


People also ask

How do you import a CSV file into HTML?

First the CSV File i.e. Comma separated Text file, will be read using HTML5 FileReader API as String. Then the String will be parsed into Rows and Columns and will be displayed in HTML Table. The HTML Markup consists of a FileUpload control (HTML File Input) and a HTML Button i.e. Upload.

How do you upload an Excel file to HTML?

On the File menu, click Import. In the Import dialog box, click the option for the type of file that you want to import, and then click Import. In the Choose a File dialog box, locate and click the CSV, HTML, or text file that you want to use as an external data range, and then click Get Data.


2 Answers

Well this is embarrassing... I found the solution I was looking for and it couldn't be simpler. I used the following code to get the desired result.

<input id="fileSelect" type="file" accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel" />   

Valid Accept Types:

For CSV files (.csv), use:

<input type="file" accept=".csv" /> 

For Excel Files 97-2003 (.xls), use:

<input type="file" accept="application/vnd.ms-excel" /> 

For Excel Files 2007+ (.xlsx), use:

<input type="file" accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" /> 

For Text Files (.txt) use:

<input type="file" accept="text/plain" /> 

For Image Files (.png/.jpg/etc), use:

<input type="file" accept="image/*" /> 

For HTML Files (.htm,.html), use:

<input type="file" accept="text/html" /> 

For Video Files (.avi, .mpg, .mpeg, .mp4), use:

<input type="file" accept="video/*" /> 

For Audio Files (.mp3, .wav, etc), use:

<input type="file" accept="audio/*" /> 

For PDF Files, use:

<input type="file" accept=".pdf" />  

DEMO:
http://jsfiddle.net/dirtyd77/LzLcZ/144/


NOTE:

If you are trying to display Excel CSV files (.csv), do NOT use:

  • text/csv
  • application/csv
  • text/comma-separated-values (works in Opera only).

If you are trying to display a particular file type (for example, a WAV or PDF), then this will almost always work...

 <input type="file" accept=".FILETYPE" /> 
like image 55
Dom Avatar answered Oct 07 '22 12:10

Dom


These days you can just use the file extension

<input type="file" ID="fileSelect" accept=".xlsx, .xls, .csv"/> 
like image 30
Big Money Avatar answered Oct 07 '22 12:10

Big Money