判断文件上传的类型详解编程语言

上传的是不是图片 js代码

function test() { 
			var filePath = $("#image").val(); 
			if("" != filePath) { 
				var fileType = getFileType(filePath); 
				//console.log(fileType); 
				//判断上传的附件是否为图片   
				if("jpg" != fileType && "jpeg" != fileType  && "png" != fileType) { 
					$("#image").val(""); 
					alert("请上传JPG,JPEG,PNG格式的图片"); 
				} else { 
					//获取附件大小(单位:KB)   
					var fileSize = document.getElementById("image").files[0].size / 1024; 
					if(fileSize > 2048) { 
						alert("图片大小不能超过2MB"); 
					} 
				} 
			} 
		} 
 
		function getFileType(filePath) { 
			var startIndex = filePath.lastIndexOf("."); 
			if(startIndex != -1) 
				return filePath.substring(startIndex + 1, filePath.length).toLowerCase(); 
			else return ""; 
		} 

html:

<input type="file" name="image" id="image" accept="image/x-png" onchange="test()" />

  

1、input 属性值有以下几个比较常用:

accept:表示可以选择的文件MIME类型,多个MIME类型用英文逗号分开,常用的MIME类型见下表。

multiple:是否可以选择多个文件,多个文件时其value值为第一个文件的虚拟路径。

2、accept

<input id="fileId1" type="file" accept="image/png,image/gif" name="file" /> 测试不好用 ??多个属性不可以?

3、multiple

多文件上传

<input id="fileId2" type="file" multiple="multiple" name="file" /> 

4、常用MIME类型

后缀名       MIME名称 
*.3gpp    audio/3gpp, video/3gpp 
*.ac3    audio/ac3 
*.asf       allpication/vnd.ms-asf 
*.au           audio/basic 
*.css           text/css 
*.csv           text/csv 
*.doc    application/msword     
*.dot    application/msword     
*.dtd    application/xml-dtd     
*.dwg    image/vnd.dwg     
*.dxf      image/vnd.dxf 
*.gif            image/gif     
*.htm    text/html     
*.html    text/html     
*.jp2            image/jp2     
*.jpe       image/jpeg 
*.jpeg    image/jpeg 
*.jpg          image/jpeg     
*.js       text/javascript, application/javascript     
*.json    application/json     
*.mp2    audio/mpeg, video/mpeg     
*.mp3    audio/mpeg     
*.mp4    audio/mp4, video/mp4     
*.mpeg    video/mpeg     
*.mpg    video/mpeg     
*.mpp    application/vnd.ms-project     
*.ogg    application/ogg, audio/ogg     
*.pdf    application/pdf     
*.png    image/png     
*.pot    application/vnd.ms-powerpoint     
*.pps    application/vnd.ms-powerpoint     
*.ppt    application/vnd.ms-powerpoint     
*.rtf            application/rtf, text/rtf     
*.svf           image/vnd.svf     
*.tif         image/tiff     
*.tiff       image/tiff     
*.txt           text/plain     
*.wdb    application/vnd.ms-works     
*.wps    application/vnd.ms-works     
*.xhtml    application/xhtml+xml     
*.xlc      application/vnd.ms-excel     
*.xlm    application/vnd.ms-excel     
*.xls           application/vnd.ms-excel     
*.xlt      application/vnd.ms-excel     
*.xlw      application/vnd.ms-excel     
*.xml    text/xml, application/xml     
*.zip            aplication/zip     
*.xlsx     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 

  

css input[type=file] 样式美化,input上传按钮美化 http://www.haorooms.com/post/css_input_uploadmh 

三、AJAX上传文件

ajax上传的时候,需要获得input:file选择的文件(可能为多个文件),获取其文件列表为: 
 
// input标签的files属性 
document.querySelector("#fileId").files 
// 返回的是一个文件列表数组 
获得的文件列表,然后遍历插入到表单数据当中。即: 
 
// 获得上传文件DOM对象 
var oFiles = document.querySelector("#fileId"); 
 
 
// 实例化一个表单数据对象 
var formData = new FormData(); 
 
 
 
// 遍历图片文件列表,插入到表单数据中 
for (var i = 0, file; file = oFiles[i]; i++) { 
    // 文件名称,文件对象 
    formData.append(file.name, file); 
} 
获得表单数据之后,就可以用ajax的POST上传。 
 
// 实例化一个AJAX对象 
var xhr = new XMLHttpRequest(); 
xhr.onload = function() { 
    alert("上传成功!"); 
} 
xhr.open("POST", "upload.php", true); 
 
// 发送表单数据 
xhr.send(formData); 
上传到服务器之后,获取到文件列表为: 
 
Array 
( 
    [jpg_jpg] => Array 
        ( 
            [name] => jpg.jpg 
            [type] => image/jpeg 
            [tmp_name] => D:/xampp/tmp/phpA595.tmp 
            [error] => 0 
            [size] => 133363 
        ) 
 
    [png_png] => Array 
        ( 
            [name] => png.png 
            [type] => image/png 
            [tmp_name] => D:/xampp/tmp/phpA5A6.tmp 
            [error] => 0 
            [size] => 1214628 
        ) 
 
) 
在服务端循环遍历这个数组就可以上传文件了。 

  

 

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/13870.html

(0)
上一篇 2021年7月19日 16:19
下一篇 2021年7月19日 16:19

相关推荐

发表回复

登录后才能评论