JavaScript文件上载大小验证
在使用JavaScript上传文件之前,是否有方法检查文件大小?否是,在较新的浏览器中使用文件API。详见TJ的答案 如果您还需要支持较旧的浏览器,则必须使用基于Flash的上载程序,如or 显示了JavaScript文件上载大小验证,javascript,validation,file-upload,Javascript,Validation,File Upload,在使用JavaScript上传文件之前,是否有方法检查文件大小?否是,在较新的浏览器中使用文件API。详见TJ的答案 如果您还需要支持较旧的浏览器,则必须使用基于Flash的上载程序,如or 显示了文件大小限制设置的工作方式 请注意,这(显然)需要Flash,而且它的工作方式与普通上传表单有点不同。是的,您可以使用 下面是一个完整的示例(请参见注释): document.getElementById(“btnLoad”).addEventListener(“单击”,函数showFileSize
文件大小限制设置的工作方式
请注意,这(显然)需要Flash,而且它的工作方式与普通上传表单有点不同。是的,您可以使用
下面是一个完整的示例(请参见注释):
document.getElementById(“btnLoad”).addEventListener(“单击”,函数showFileSize(){
//(无法使用`typeof FileReader==“function”`因为
//在某些浏览器上返回为“对象”。所以只要看看它是否在那里就可以了
//(完全没有。)
如果(!window.FileReader){//这是不太可能的,那么浏览器支持几乎是通用的
log(“此浏览器尚不支持文件API”);
返回;
}
var input=document.getElementById('fileinput');
如果(!input.files){//这是不太可能的,浏览器支持几乎是通用的
console.error(“此浏览器似乎不支持文件输入的`files`属性。”);
}如果(!input.files[0]),则为else{
addPara(“请在单击“加载”之前选择一个文件”);
}否则{
var file=input.files[0];
addPara(“File”+File.name+”是“+File.size+”字节大小”);
}
});
函数addPara(文本){
var p=document.createElement(“p”);
p、 text内容=文本;
文件.正文.附件(p);
}
正文{
字体系列:无衬线;
}
您可以试试这个
它可以在IE6(及以上)、Chrome或Firefox下使用jquery正常工作:
<form action="upload" enctype="multipart/form-data" method="post">
Upload image:
<input id="image-file" type="file" name="file" />
<input type="submit" value="Upload" />
<script type="text/javascript">
$('#image-file').bind('change', function() {
alert('This file size is: ' + this.files[0].size/1024/1024 + "MiB");
});
</script>
</form>
上载图像:
$(“#图像文件”).bind('change',function(){
警报('此文件大小为:'+This.files[0].size/1024/1024+“MiB”);
});
如果使用jQuery验证,可以编写如下内容:
$.validator.addMethod(
“最大文件大小”,
函数(值、元素){
if(this.optional(element)| | |!element.files | |!element.files[0]){
返回true;
}否则{
return element.files[0].size我使用了在Mozilla开发者网络站点上找到的一个主要Javascript函数,以及另一个AJAX函数,并根据需要进行了更改。它会收到一个文档元素id,该id与我希望在html代码中写入文件大小的位置有关
<Javascript>
function updateSize(elementId) {
var nBytes = 0,
oFiles = document.getElementById(elementId).files,
nFiles = oFiles.length;
for (var nFileId = 0; nFileId < nFiles; nFileId++) {
nBytes += oFiles[nFileId].size;
}
var sOutput = nBytes + " bytes";
// optional code for multiples approximation
for (var aMultiples = ["K", "M", "G", "T", "P", "E", "Z", "Y"], nMultiple = 0, nApprox = nBytes / 1024; nApprox > 1; nApprox /= 1024, nMultiple++) {
sOutput = " (" + nApprox.toFixed(3) + aMultiples[nMultiple] + ")";
}
return sOutput;
}
</Javascript>
<HTML>
<input type="file" id="inputFileUpload" onchange="uploadFuncWithAJAX(this.value);" size="25">
</HTML>
<Javascript with XMLHttpRequest>
document.getElementById('spanFileSizeText').innerHTML=updateSize("inputFileUpload");
</XMLHttpRequest>
函数updateSize(elementId){
var nBytes=0,
oFiles=document.getElementById(elementId).files,
n文件=文件长度;
对于(var nFileId=0;nFileId1;nApprox/=1024,n倍数++){
sOutput=“(“+nApprox.toFixed(3)+aMultiples[nMultiple]+”);
}
回输;
}
document.getElementById('spanFileSizeText')。innerHTML=updateSize(“inputFileUpload”);
干杯如果您将Ie“文档模式”设置为“标准”,则可以使用简单的javascript“大小”方法获取上传文件的大小
将Ie“文档模式”设置为“标准”:
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
然后,使用“size”javascript方法获取上传文件的大小:
<script type="text/javascript">
var uploadedFile = document.getElementById('imageUpload');
var fileSize = uploadedFile.files[0].size;
alert(fileSize);
</script>
var uploadedFile=document.getElementById('imageUpload');
var fileSize=uploadedFile.files[0]。大小;
警报(文件大小);
这对我很有用。这很简单
const-oFile=document.getElementById(“文件上载”).files[0];//
如果(oFile.size>2097152)//2个MiB表示字节。
{
警报(“文件大小必须小于2MiB!”);
返回;
}
即使问题已经回答,我还是想发布我的答案。可能对未来的观众很方便。您可以像在下面的代码中一样使用它
<input type="file" id="fileinput" />
<script type="text/javascript">
function readSingleFile(evt) {
//Retrieve the first (and only!) File from the FileList object
var f = evt.target.files[0];
if (f) {
var r = new FileReader();
r.onload = function(e) {
var contents = e.target.result;
alert( "Got the file.n"
+"name: " + f.name + "n"
+"type: " + f.type + "n"
+"size: " + f.size + " bytesn"
+ "starts with: " + contents.substr(1, contents.indexOf("n"))
);
if(f.size > 5242880) {
alert('File size Greater then 5MiB!');
}
}
r.readAsText(f);
} else {
alert("Failed to load file");
}
}
函数readSingleFile(evt){
//从FileList对象检索第一个(也是唯一的!)文件
var f=evt.target.files[0];
如果(f){
var r=新文件读取器();
r、 onload=函数(e){
var内容=e.target.result;
警报(“已获取文件.n”
+“名称:”+f.name+“n”
+“类型:”+f.type+“n”
+“大小:”+f.size+“字节数”
+以“+contents.substr(1,contents.indexOf(“n”)开头)
);
如果(f.尺寸>5242880){
警报('文件大小大于5MiB!');
}
}
r、 readAsText(f);
}否则{
警报(“加载文件失败”);
}
}
适用于动态和静态文件元素
Javascript唯一解决方案
函数validateSize(输入){
const fileSize=input.files[0].size/1024/1024;//在MiB中
如果(文件大小>2){
警报(“文件大小超过2 MiB”);
//$(file.val(“”);//用于使用Jquery进行清除
}否则{
//继续
}
}
此线程中提供的JQuery示例非常过时,而google根本没有任何帮助,因此下面是我的修订版:
$('#图像文件')。在('change',function()上{
console.log($(此)[0]。文件[0]。名称+'文件大小为:'+$(此)[0]。文件[0]。大小/1024/1024+'Mb');
});
我做了这样的东西:
$('#图像文件')。在('change',function()上{
var numb=$(this)[0]。文件[0]。大小/1024/1024;
麻木=麻木。固定(2);
如果(麻木>2){
警报('to big,最大值为2MB。您的文件大小为:'+numb+'MiB');
}否则{
警报('没问题,您的文件有'+numb+'MiB')
}
});
我遇到了这个问题,我需要的一行代码隐藏在一大块代码中
<
const myFile = document.getElementById("fileUpload").files[0];
if (myFIle.size > 2097152) // 2 MiB for bytes.
{
alert("File size must under 2MiB!");
return;
}