我只需要通过<input type="file">标签上传图像文件。
现在,它接受所有的文件类型。但是,我想将其限制为特定的图像文件扩展名,包括.jpg, .gif等。
如何实现这个功能?
我只需要通过<input type="file">标签上传图像文件。
现在,它接受所有的文件类型。但是,我想将其限制为特定的图像文件扩展名,包括.jpg, .gif等。
如何实现这个功能?
当前回答
这可以通过
<input type="file" accept="image/*" />
但这不是一个好方法。您必须在服务器端编码以检查文件是否为图像。
检查图像文件是真实图像还是假图像
if(isset($_POST["submit"])) {
$check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
if($check !== false) {
echo "File is an image - " . $check["mime"] . ".";
$uploadOk = 1;
}
else {
echo "File is not an image.";
$uploadOk = 0;
}
}
更多参考,请看这里
http://www.w3schools.com/tags/att_input_accept.asp http://www.w3schools.com/php/php_file_upload.asp
其他回答
在html中;
<input type="file" accept="image/*">
这将接受所有的图像格式,但不接受其他文件,如pdf或视频。
但是如果你使用的是django, django forms.py;
image_field = forms.ImageField(Here_are_the_parameters)
如果你想一次上传多张图片,你可以添加多个属性输入。
上传多个文件:<input type="file" multiple accept='image/*'>
使用输入标记的accept属性。要只接受PNG, JPEG和GIF,您可以使用以下代码:
<标签>你的形象文件 <输入类型=“文件” < - >标签
或者仅仅是:
<标签>你的形象文件 <输入类型=“文件” < - >标签
请注意,这只向浏览器提供了一个提示,提示要向用户显示什么文件类型,但这很容易避免,因此您也应该始终在服务器上验证上传的文件。
它应该可以在IE 10+, Chrome, Firefox, Safari 6+, Opera 15+上运行,但在手机上的支持非常粗略(截至2015年),根据一些报告,这实际上可能会阻止一些移动浏览器上传任何东西,所以一定要好好测试你的目标平台。
有关浏览器支持的详细信息,请参见http://caniuse.com/#feat=input-file-accept
简单而强大的方式(动态接受)
将格式放在数组中,如"image/*"
var上传“上传”= document . getElementById (); var阵列= [/ mp4视频”,“image / p”); 上传. accept =阵列; 上传addEventListener(“change”()= > ' 上传游戏机。log (value)。 ') <输入类型=“文件”id=“上传”>
使用type="file"和accept="image/*"(或者你想要的格式),允许用户选择一个特定格式的文件。但是你必须在客户端重新检查,因为用户可以选择其他类型的文件。 这对我很有用。
<input #imageInput accept="image/*" (change)="processFile(imageInput)" name="upload-photo" type="file" id="upload-photo" />
然后,在javascript脚本中
processFile(imageInput) {
if (imageInput.files[0]) {
const file: File = imageInput.files[0];
var pattern = /image-*/;
if (!file.type.match(pattern)) {
alert('Invalid format');
return;
}
// here you can do whatever you want with your image. Now you are sure that it is an image
}
}