【发布时间】:2021-12-23 22:42:45
【问题描述】:
我一直在尝试实现在互联网上找到的各种逻辑。但问题是,如果我更改任何文件的扩展名,它会显示好的。我的代码如下:
'use strict';
$("#myfiles").on('change',function(){
var files = $('#myfiles').get(0).files;
if (files.length > 0) {
var file = files[0];
var fileReader = new FileReader();
fileReader.onloadend = function (e) {
var arr = (new Uint8Array(e.target.result)).subarray(0, 4);
var header = '';
for (var i = 0; i < arr.length; i++) {
header += arr[i].toString(16);
}
alert(header);
var type = 'unknown';
switch (header) {
case '89504e47':
type = 'image/png';
break;
case '47494638':
type = 'image/gif';
break;
case 'ffd8ffe0':
case 'ffd8ffe1':
case 'ffd8ffe2':
type = 'image/jpeg';
break;
case '25504446':
type = 'application/pdf';
break;
}
//if(type=='image/jpeg') { alert('Its JPEG/JPG'); } else { alert('Its Not'); }
//alert(type);
if (type!=='image/png' && type!=='image/gif' && type!=='image/jpeg' && type!=='application/pdf' ) {
alert("File Type Not Allowed");
} else {
$('#myfile_mydrive').fileupload({
downloadTemplateId: 'template-download-gallery',
uploadTemplateId: 'template-upload-gallery',
paramName: 'files[]',
url: 'mydrive-upload.php',
dataType: 'json',
autoUpload: true,
maxNumberOfFiles: 10,
acceptFileTypes: /(\.|\/)(pdf|doc|docx|xls|ppt|zip|gif|jpe?g|png)$/i
});
}
};
fileReader.readAsArrayBuffer(file);
}
});
所以我实现了上面的代码。但是它显示一两次没问题,然后即使显示不支持该文件类型,它也会上传文件。
【问题讨论】:
-
另外,请不要使用不相关的标签。如果您想在浏览器中检查任何内容,PHP 看起来与我无关
-
@NicoHaase:我已经尝试过链接解决方案。但问题是我写的代码工作了两次,然后它开始允许所有类型的文件
-
这是什么意思?你试图解决为什么它只能工作两次?期间有哪些变化?
-
@NicoHaase:我试图从一个函数中调用整个代码。但似乎由于“const”,该功能不起作用。我也尝试了其他代码,但似乎没有任何效果。它工作两次意味着,它检查文件 mime 两次,然后停止检查。就像我正在尝试上传 excel 文件而不是图像文件一样。它将检查前两次并阻止。但在那之后它允许所有类型。
标签: javascript php jquery mime