【问题标题】:php file upload validation and error displayingphp文件上传验证和错误显示
【发布时间】:2012-09-04 04:09:01
【问题描述】:

我有一个表单,其中一个输入作为文件上传。我有一个 php 脚本,我用 jquery ajax 调用它来验证其他表单字段并在表单上方的 div 中显示错误消息。它使用 .html() jquery 函数执行此操作,基于与以下脚本非常相似的 php echo。

我还创建了一个 php 脚本来验证文件上传,如下所示:

<?php

    $errorList = array();
    $inc = 0;


    $allowedExt = array("jpg", "jpeg", "gif", "png");
    $fileExt = end(explode(".", $_FILES['imgUpload']['name']));
    if((($_FILES['imgUpload']['type'] == 'image/gif')
     || ($_FILES['imgUpload']['type'] == 'image/pnjpeg')
     || ($_FILES['imgUpload']['type'] == 'image/jpeg'))
     && ($_FILES['imgUpload']['size'] < 2000000)
     && in_array($fileExt, $allowedExt)){
    if($_FILES['imgUpload']['error'] > 0)){

        $errorList[$inc++] = '<span class="error"> File error:'. $_FILES['imgUpload']['error'].'</span>';
    }

    }
    else{
    $errorList[$inc++] = '<span class="error"> Invalid file </span>';

    }

    echo '<ul class="errorList">';
    for($i =0; $i<$inc; $i++){
        echo $errorList[$i];

    }
    echo '</ul>';


?>

我希望此脚本中的错误消息以与其他脚本类似的方式显示,但据我所知,无法使用 ajax 完成文件上传。

有人对我如何解决这个问题有任何建议吗?

【问题讨论】:

    标签: php javascript jquery


    【解决方案1】:

    Ajax 无法上传文件。但是你可以使用 IFrame 让它看起来像 Ajax。

    您的选择是:

    • 隐藏的 iframe 技巧,由 Google 推广。自己实现这个可能会导致一些笨拙的东西,所以有一些库,比如 jQuery,它有插件,比如 jQuery 流行的 Form Plugin,可以自动执行这个,所以你在使用它时不必感到脏。李>
    • 使用 Flash 来简化该过程。最值得注意的是 SWFUpload 非常受欢迎。在所有条件相同的情况下,我可能会使用 Javascript 解决方案来解决这个问题,但我过去曾成功使用过它。这个解决方案最酷的地方在于它带有更好的界面,例如加载指示器和缩略图等。不过,此时您要求用户使用 Flash + Javascript,这在某些情况下可能不起作用。
    • 使用 Silverlight 代替 Flash,虽然我并不认为这是一个可行的解决方案,因为它的渗透率比其他两种解决方案低得多。

    如需帮助,请参阅此示例

    http://www.anyexample.com/programming/php/php_ajax_example__asynchronous_file_upload.xml

    它正在使用 iframe 选项

    【讨论】:

    • 不错的建议老兄。这可能听起来有点菜,但是文件是在提交表单后上传的吧?
    • 是的,表单将被提交,但由于 iframe,它会保留页面。试试看:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    相关资源
    最近更新 更多