前言
大家好,今天和大家分享一下上传文件如何实现上传限制,在制作项目时会遇见需要上传文件的功能,比如上传图片,上传音频,上传视频等等。但是点击上传文件打开文件夹时,文件夹内有好多格式的图片或音频,这个时候为了方便就可以进行文件格式的限制,只显示要上传的文件类型,下面我们来看看如何实现这个功能。
一、实现效果
因为我上传的是音频,所以我设置了只能显示mp3和m4a两种格式的文件。
二、具体实现
1.普通校验上传文件
代码如下(示例):
export function validUploadFile(type = 'img', file) {
if (!file) {
file = type;
type = 'img'
}
const fileName = file.name;
const m = fileName.match(/\.(\w+)(#|\?|$)/);
const fileType = (m && m[1]).toString().toLowerCase();
const allowHook = {
video: ['mp4', 'ogv', 'ogg', 'webm'],
audio: ['wav', 'mp3', 'ogg', 'acc', 'webm', 'amr'],
file: ['doc', 'docx', 'xlsx', 'xls', 'pdf'],
excel: ['xlsx', 'xls'],
img: ['jpg', 'jpeg', 'png', 'gif']
}
const validType = (allowHook[type] || []).includes(fileType);
if (!validType) {
const supprtTypes = allowHook[type].join(',');
return `只支持${
supprtTypes}类型文件上传`;
}
if (fileName.indexOf('%') > -1 || fileName.indexOf('&') > -1) {
return '上传文件名称不能带有字符"%","&"';
}
const isLt10M = file.size / 1024 / 1024 < 10;
if (type === file && !isLt10M) {
this.$message.error('上传资料大小不能超过 10MB!');
return false;
}
return '';
}
2.el-upload + accept限制上传的文件格式
代码如下(示例):
html:
下面的代码看着多,其实用到的就一句**:accept=“this.acceptFile(‘video’)”**这个就是限制文件类型的方法。
<el-upload
:accept="this.acceptFile('video')"
:data="{savePath:'technology'}"
:disabled="disabled"
:multiple="isNewAdd"
action="url"
:rowIdex="rowIndex"
:before-upload="handleBeforeUpload.bind(null, 'file')"
:on-success="handleUploadSuccess.bind(null, rowIndex)"
:on-remove="handleUploadRemove.bind(null, rowIndex)"
:on-preview="handlePreview.bind(null, 'file')"
:file-list="selectRow.fileList"
:headers="{ Authorization: token }"
>
<el-button :disabled="disabled" type="primary">点击上传</el-button>
</el-upload>
js如下:
下面的代码可以根据自己上传的文件选用,看你是上传音频视频还是图片。
export function acceptFile(e) {
const allowHook = {
video: '.mp4, .ogv, .ogg, .webm',
audio: '.wav, .mp3, .ogg, .acc, .webm, .amr',
file: 'doc,.docx,.xlsx,.xls,.pdf',
excel: 'xlsx,.xls',
img: '.jpg, .jpeg, .png, .gif'
}
if (e) {
return allowHook[e];
}
let srt = null
for (const k in allowHook) {
srt += allowHook[k]
}
return srt
}
可以根据自己上传的文件格式来进行设置,从代码中拿取自己所需要的。
总结
本章主要是讲得是上传文件时选择文件格式的一个方法,是为了方便开发人员和用户的使用和操作,感谢您的阅读,希望本章能够帮助到您。