2015-07-20 86 views
3

JavaScript具有文件表示的FileBlob,兩者幾乎都是相同的。有沒有辦法檢查一個變量是否持有FileBlob類型的數據?檢查變量是否保存文件或Blob

+2

'如果(x.name)...'對於庸醫,'如果(x.constructor ===文件)'對於學習者。 – dandavis

+1

或comapare constructoe'x.constructor.name =='Blob''的名稱 – Reflective

回答

6

W3.org:

'File對象是具有名稱屬性,它是一個字符串的Blob對象;'

在文件的情況下:

var d = new Date(2013, 12, 5, 16, 23, 45, 600); 
var generatedFile = new File(["Rough Draft ...."], "Draft1.txt", {type: 'text/plain', lastModified: d}); 

console.log(typeof generatedFile.name == 'string'); // true 

在斑點的情況下:

var blob = new Blob(); 
console.log(typeof blob.name); // undefined 

條件:

var isFile = typeof FileOrBlob.name == 'string'; 
0

試圖確定時,這對我的作品的對象是file:

var reader = new FileReader(); 

if(file.type){ 
    reader.readAsDataURL(file); 
} 

如果我要檢查,如果它像一個形象我做這個特定的文件類型:

if(file.type && file.type.indexOf('image') !== -1){ 
    reader.readAsDataURL(file); 
} 
1

比較構造類:

var b = new Blob() 
console.log(b.constructor === Blob) // true 
6

最簡單的方法:

a = new File([1,2,3], "file.txt"); 
b = new Blob([1,2,3]); 
c = "something else entirely"; 

a instanceof File 
> true 
b instanceof File 
> false 
c instanceof File 
> false