Angular 2 -验证一个文件是否真的是一个图像
Angular 2 - Validate if a file is really an image
在Angular 2中如何验证一个文件是否真的是一个图像?
isImage(file: File): boolean {
return /^image'//.test(file.type);
}
在上传后的上述函数中,只需将.txt
更改为.png
文件扩展名,它将返回true
例如:text.txt
为text.png
HTML <input>
有一个可以使用的属性
<input accept=".png, .text" />
您可以通过文件类型轻松检查。例如,它的视频类型将是"video/format"如果是图像,则是&;image/format&;你可以用这个
event.target.files [0] .type.includes('图像')
下面不是关于Angular的,但它确实回答了在javascript中进行客户端文件类型验证的问题。根据您的需求调整解决方案应该很容易:如何在上传之前使用javascript检查文件MIME类型?
这是一个自定义指令。您也可以将其用于其他文件类型。只需添加/删除所需的扩展在RegExp
import { FormControl, NG_VALIDATORS, Validator } from '@angular/forms';
import { Directive } from '@angular/core';
@Directive({
selector: '[FileTypeValidator]',
providers: [
{
provide: NG_VALIDATORS, useExisting: FileTypeValidator, multi: true
}
]
})
export class FileTypeValidator implements Validator {
static validate(c: FormControl): { [key: string]: any } {
if (c.value) {
if (c.value[0]) {
return FileTypeValidator.checkExtension(c);
};
}
}
private static checkExtension(c: FormControl) {
let valToLower = c.value[0].name.toLowerCase();
let regex = new RegExp("(.*?)'.(jpg|png|jpeg)$"); //add or remove required extensions here
let regexTest = regex.test(valToLower);
return !regexTest ? { "notSupportedFileType": true } : null;
}
validate(c: FormControl): { [key: string]: any } {
return FileTypeValidator.validate(c);
}
}
在你的组件中,
this.form = new FormGroup({
file: new FormControl("", [FileTypeValidator.validate])
});
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- jQuery:循环一个具有不同超时值的循环
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 一个Javascript回调模式示例 - 它真的更有效吗?
- 是Backbone.js真的是一个MVC
- JavaScript的“返回”真的是一个*关键字*吗?
- JavaScript检查一个对象数组的结果是错误的,而它应该是真的
- JS说我有一个未定义的对象.真的需要一些帮助来解决这个问题吗
- 一个元素在淡出另一个元素之后的fadeIn是'真的不管用
- 在一个项目中,我可以写一个文件,但在另一个项目我可以't、 真的很奇怪
- 如何使PHP脚本重定向,并显示一个弹出框同时当某事是真的/成功
- Angular 2 -验证一个文件是否真的是一个图像
- 一个网站真的需要DjangoRestFrameWork吗?
- 如果一个类永远不会被子类化,那么在JavaScript中原型真的重要吗?
- 这是一个什么样的物体,或者它真的是一个物体吗?它是如何工作的?(JavaScript)
- 这真的是一个奇怪的错误,我没有'以前没有见过,我可以'不要应付
- 我们真的需要一个函数对象来应用javascript中的原型方法吗?如果是,则说明原因
- 如何判断一个文件是否真的被下载和保存,尽管浏览器预取/缓存
- 在JavaScript中读取数组的' length '属性是否真的是一个昂贵的操作
- 我怎么知道一个页面真的是完全加载的?