Getting the file type of a zip file in input file

BastienSander picture BastienSander · May 28, 2014 · Viewed 10.2k times · Source

I am trying to catch a file on a input[type=file] change event :

Here is my HTML :

<input type="file" id="file-upload" name="file-upload">

Here is my JavaScript (using jQuery) :

$('#file-upload').bind("change", function(e){
    var file = (e.srcElement || e.target).files[0];
    console.log(e);
}

It works fully fine with images, txt, doc, docx, xlsx etc etc etc BUT NOT with zip files. When I try it with a zip file, the var file contains a type attributes empty.

Do you have an idea why and how i could get it?

EDIT 1 I use Chrome Browser, in Windows 7. My files are zipped with 7zip.

EDIT 2 here is what I get :

Console log

Answer

fedmich picture fedmich · May 28, 2014

Your code works.

I tried enapupe's fiddle and it works http://jsfiddle.net/rvd6T/

$('#file-upload').bind("change", function(e){
var file = (e.srcElement || e.target).files[0];
console.log(file);
console.log(e);
});

My console log enter image description here


You should be be aware that the types will vary.

sometimes it would be type: "application/x-zip-compressed" or "application/zip"

You most likely should just base it on the filename instead, *.zip (ends with zip & case insensitive)

but still must check it on server side if its actually a ZIP file and unzipable