gpt4 book ai didi

php - 上传前检查文件大小

转载 作者:IT王子 更新时间:2023-10-29 01:11:52 30 4
gpt4 key购买 nike

我正在使用我从这里获得的这个 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 代码解决了这个问题:

<script language='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.
}
}
</script>

这会检查文件大小,并在提交表单之前提醒用户。

最佳答案

客户端上传取消

在现代浏览器(FF >= 3.6、Chrome >= 19.0、Opera >= 12.0 和 Safari 上的 bug)上,您可以使用 HTML5 File API .当文件输入的值发生变化时,此 API 将允许您检查文件大小是否在您的要求范围内。当然,这个以及 MAX_FILE_SIZE 都可以被篡改,因此请始终使用服务器端验证。

<form method="post" enctype="multipart/form-data" action="upload.php">
<input type="file" name="file" id="file" />
<input type="submit" name="submit" value="Submit" />
</form>

<script>
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);
</script>

服务器端上传取消

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

PHP 验证

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

上传.php

<?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
}
}

关于php - 上传前检查文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11514166/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com