查看php上传大小查看,php上传文件前检查大小

我正在使用从这里获得的JavaScript,它可以完美地满足我的需求。

var _validFileExtensions = [".jpg", ".jpeg"];

function File_Validator(theForm){

var arrInputs = theForm.getElementsByTagName("input");

for (var i = 0; i < arrInputs.length; i++) {

var oInput = arrInputs[i];

if (oInput.type == "file") {

var sFileName = oInput.value;

var blnValid = false;

for (var j = 0; j < _validFileExtensions.length; j++) {

var sCurExtension = _validFileExtensions[j];

if (sFileName.substr(sFileName.length - sCurExtension.length, sCurExtension.length).toLowerCase() == sCurExtension.toLowerCase()) {

blnValid = true;

break;

}

}

if (!blnValid) {

alert("Invalid image file type!");

return false;

}

}

}

return true;

}

现在,我想知道是否还可以检查文件大小,并且如果文件大于500kb->全部,然后按提交/上传按钮,则失败?

编辑

在研究了PHPMyCoder的建议之后,我最终通过使用以下javascript代码解决了问题:

function checkFileSize(inputFile) {

var max = 3 * 512 * 512; // 786MB

if (inputFile.files && inputFile.files[0].size > max) {

alert("File too large."); // Do your thing to handle the error.

inputFile.value = null; // Clear the field.

}

}

这将检查文件大小,并在提交表单之前警告用户。

最佳答案

客户端上传取消

在现代浏览器(FF> = 3.6,Chrome> = 19.0,Opera> = 12.0和Safari上的 buggy )上,可以使用HTML5 File API。当文件输入的值更改时,此API将允许您检查文件大小是否在您的要求之内。当然,此代码以及MAX_FILE_SIZE均可被篡改,因此请始终使用服务器端验证。

document.forms[0].addEventListener('submit', function( evt ) {

var file = document.getElementById('file').files[0];

if(file && file.size < 10485760) { // 10 MB (this size is in bytes)

//Submit form

} else {

//Prevent default and display error

evt.preventDefault();

}

}, false);

服务器端上载取消

在服务器端,不可能阻止从PHP进行上载,因为一旦调用PHP,上载就已经完成。如果您想节省带宽,则可以使用ini设置 upload_max_filesize 拒绝从服务器端上传。麻烦的是,这适用于所有上传,因此您必须选择适合所有上传的自由格式。其他答案中已经讨论了MAX_FILE_SIZE的使用。我建议reading the manual on it。要知道它以及其他任何客户端(包括javascript检查)都可能被篡改,因此您应该始终进行服务器端(PHP)验证。

PHP验证

在服务器端,您应该验证文件是否在大小限制之内(因为到目前为止,除INI设置外的所有内容都可能被篡改)。您可以使用 $_FILES 数组找出上传大小。 (有关$_FILES内容的文档可以在 MAX_FILE_SIZE docs下方找到)

upload.php

if(isset($_FILES['file'])) {

if($_FILES['file']['size'] > 10485760) { //10 MB (size is also in bytes)

// File too big

} else {

// File within size restrictions

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值