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

时间:2015-07-01 23:58:59

标签: 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 function合并?

我的期望如下:

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

有人可以帮帮我吗?谢谢!

1 个答案:

答案 0 :(得分:2)

以上评论显然是正确的。 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