webuploader限制上传文件类型
webuploader限制上传文件类型,原来用的是以下代码,发现有时不起作用,doc,docx,ppt,pptx,txt,pdf等,自定义文件列表里只是显示一个。mimeTypes: accept['mimes']application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,text/plain,application/pdf
看到网上以下代码,更改后的确对于360急速浏览器可以,但微信下浏览又不行了,特此记录。 暂时删除mimeTypes: accept['mimes'],所有文档均可显示,但部分条件不能上传
uploader = webuploader.create({ accept: { extensions: "pdf,doc,ppt,pptx,xls,xlsx,docx,rar,zip,7z,tar.gz,war,jar,txt,chm,pdr,azw,prc,mbp,tan,tpz,epub,mobi,rp", mimeTypes: ".pdf,.doc,.ppt,.pptx,.xls,.xlsx,.docx,.rar,.zip,.7z,.tar.gz,.war,.jar,.txt,.chm,.pdr,.azw,.prc,.mbp,.tan,.tpz,.epub,.mobi,.rp" } }); 在WebUploader中限制上传文件类型时,通常可以通过`accept`参数来设置允许的文件类型和MIME类型。你提到的代码中,`mimeTypes`和`extensions`的设置是正确的,但有时可能会因为浏览器的兼容性问题导致部分文件类型无法正确识别。
### 问题分析
1. **MIME类型设置问题**:你提到的代码中,`mimeTypes`的值是以`.`开头的文件扩展名,而不是MIME类型。正确的`mimeTypes`应该是MIME类型的字符串,例如`application/pdf`、`application/msword`等。
2. **浏览器兼容性问题**:不同浏览器对MIME类型的支持可能有所不同,尤其是在移动端浏览器(如微信内置浏览器)中,可能会出现识别问题。
### 解决方案
你可以尝试以下代码来设置`accept`参数,确保`mimeTypes`和`extensions`都正确设置:
uploader = WebUploader.create({
accept: {
title: '文件', // 上传文件的描述
extensions: 'pdf,doc,docx,ppt,pptx,xls,xlsx,txt,rar,zip,7z', // 允许的文件扩展名
mimeTypes: 'application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,text/plain,application/zip,application/x-rar-compressed,application/x-7z-compressed' // 允许的MIME类型
}
});
### 解释
- **extensions**: 这里列出了允许上传的文件扩展名,例如`pdf`、`doc`、`docx`等。
- **mimeTypes**: 这里列出了允许的MIME类型,例如`application/pdf`、`application/msword`等。
### 其他注意事项
1. **浏览器兼容性**:如果某些浏览器(如微信内置浏览器)仍然无法正确识别文件类型,可以尝试使用`extensions`来限制文件类型,而不依赖`mimeTypes`。
2. **文件类型检测**:WebUploader在上传前会检测文件的MIME类型和扩展名,如果两者不匹配,可能会导致文件无法上传。你可以通过`filePicker`事件手动检查文件类型,并在必要时提示用户。
uploader.on('fileQueued', function(file) {
var ext = file.ext.toLowerCase();
var allowedExtensions = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'txt', 'rar', 'zip', '7z'];
if (allowedExtensions.indexOf(ext) === -1) {
alert('不支持的文件类型');
uploader.removeFile(file);
}
});
### 总结
通过正确设置`extensions`和`mimeTypes`,并处理浏览器兼容性问题,可以有效限制WebUploader上传的文件类型。如果仍然遇到问题,可以通过手动检查文件扩展名来进一步确保文件类型的正确性。
如果你有更多关于Discuz或其他建站方面的问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。 在WebUploader中,限制上传文件类型通常通过`accept`参数来实现。你提到的代码中,`mimeTypes`和`extensions`是用来限制上传文件类型的两种方式。`extensions`是通过文件扩展名来限制,而`mimeTypes`是通过文件的MIME类型来限制。
你遇到的问题可能是由于不同浏览器对MIME类型的支持不一致导致的。有些浏览器可能对某些MIME类型的识别不够准确,导致上传限制失效。
### 解决方案
1. **使用`extensions`限制文件类型**:
你可以通过`extensions`参数来限制上传文件的扩展名,这种方式相对更稳定,因为它是基于文件的后缀名来判断的。
uploader = WebUploader.create({
accept: {
extensions: "pdf,doc,ppt,pptx,xls,xlsx,docx,rar,zip,7z,tar.gz,war,jar,txt,chm,pdr,azw,prc,mbp,tan,tpz,epub,mobi,rp"
}
});
2. **结合`mimeTypes`和`extensions`**:
如果你仍然希望使用`mimeTypes`来限制文件类型,可以结合`extensions`一起使用,这样可以增加兼容性。
uploader = WebUploader.create({
accept: {
extensions: "pdf,doc,ppt,pptx,xls,xlsx,docx,rar,zip,7z,tar.gz,war,jar,txt,chm,pdr,azw,prc,mbp,tan,tpz,epub,mobi,rp",
mimeTypes: "application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/vnd.ms-powerpoint,application/vnd.openxmlformats-officedocument.presentationml.presentation,text/plain,application/zip,application/x-rar-compressed,application/x-7z-compressed,application/x-tar,application/x-gzip,application/java-archive,application/x-chm,application/x-mobipocket-ebook,application/epub+zip"
}
});
3. **处理浏览器兼容性问题**:
如果你发现某些浏览器(如微信内置浏览器)对MIME类型的支持不一致,可以考虑在服务器端进行二次验证。前端限制只是第一道防线,服务器端的验证才是最终保障。
// 服务器端验证文件类型
$allowedTypes = ['pdf', 'doc', 'docx', 'ppt', 'pptx', 'xls', 'xlsx', 'rar', 'zip', '7z', 'tar.gz', 'war', 'jar', 'txt', 'chm', 'pdr', 'azw', 'prc', 'mbp', 'tan', 'tpz', 'epub', 'mobi', 'rp'];
$fileExtension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
if (!in_array($fileExtension, $allowedTypes)) {
die('文件类型不允许');
}
### 总结
- **优先使用`extensions`**:通过文件扩展名来限制上传文件类型,这种方式更稳定。
- **结合`mimeTypes`**:如果需要更严格的限制,可以结合`mimeTypes`一起使用。
- **服务器端验证**:无论前端如何限制,服务器端都应该进行二次验证,确保上传的文件类型符合要求。
希望这些建议能帮助你解决WebUploader上传文件类型限制的问题。如果你有其他问题,欢迎继续提问!
-- 本回答由 人工智能 AI智能体 生成,内容仅供参考,请仔细甄别。
页:
[1]