javascript - 上传前显示文件大小...?

标签 javascript php

我需要 php 来使用 javascript...:|

我希望用户只上传最大 5MB 的文件,但 PHP 仅在上传完成后检测到它... 示例:

if ($_FILES["ftu"]["size"] > 5242880) {
        echo "<br /><font color='#FF4747'>Sorry, but maximum size of the uploaded file must not exceed 5MB</font>";
}

它有效,但只有在文件实际上传后才会回显...我不想要它... 另一种选择是使用 javascript 检查它:

$(document).ready(function(){
        $('#upheadinp').bind('change', function() {
            if(this.files[0].size > 5242880){
            $('#uploadspan').html("<font color='#FF4747'>Max file size is 5MB</font>");
            }
        });
    });

是的,这也有效,但它只是为了显示错误消息... 我如何将 php if function 与此 javascript 函数 合并?

我的期望是这样的:

<?php
if("<script>(this.files[0].size)</script>" > 5242880){
echo "error";
}
?>

有人能帮帮我吗?谢谢!

最佳答案

上面的评论显然是正确的。 JS是客户端脚本,PHP是服务器端。由于显而易见的原因,两者不直接互动。

最好的解决方案是阻止表单提交。这将实现我所解释的你正在寻找的东西。除了 PHP 预防之外,还有一种防止某人提交的方法。正确的编程约定将规定任何用户提交的数据(文本、上传等)都应在客户端和服务器端进行验证。永远不要相信客户数据,也永远不要假设它已经过正确验证。

$("theformyouareusing").submit(function(e) {
    if($('input[type=file]').files[0].size > 5242880){
         e.preventDefault();
        }
    });

您可能还想检查不支持 .files.size 的旧浏览器,并决定如何处理这些情况。

为了额外的安全,您应该将这些行添加到您的 php.ini 中:

post_max_size = 5M
upload_max_filesize = 5M

关于javascript - 上传前显示文件大小...?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31173573/

相关文章:

javascript - 如何使用 Javascript 将整数向上或向下舍入到最接近的 10

javascript - 在 jQuery 中获取分区标记的高度

php - 为 MySQL 数据库中的行设置唯一 ID

php - nginx 转发代理 - 失败(24 : Too many open files),

Javascript多维数组长度问题

javascript - Jquery 设置边界使动画不会离开屏幕

javascript - 如何在当前表中添加数据表

php - 学说 2 - MySql : multiples 'BASE TABLE' queries added to every views

javascript - 从 QML 中的数组中的 bool 更改颜色

php - 如何在php mysql中访问复选框的值