使用jQuery验证和发布

时间:2012-09-10 16:28:46

标签: php jquery jquery-plugins

我想知道如何使用jquery验证和发布图片上传论坛。只有两个输入:标题和图像。如果这些字段中的任何一个为空或者上传的文件格式错误,我需要给出错误。这是我的代码(目前不使用jquery。)

Image.php

<?php

$uploadDir = 'images/'; //Image Upload Folder
if(isset($_POST['Submit']))
{
    $title = mysql_real_escape_string($_POST['title']); 
    $fileName = $_FILES['Photo']['name'];
    $tmpName = $_FILES['Photo']['tmp_name'];
    $fileSize = $_FILES['Photo']['size'];
    $fileType = $_FILES['Photo']['type'];
    $filePath = $uploadDir . $fileName;
    $result = move_uploaded_file($tmpName, $filePath);
    if (!$result) {
        echo "Error uploading file";
        exit;
    }
    if(!get_magic_quotes_gpc())
    {
        $fileName = addslashes($fileName);
        $filePath = addslashes($filePath);
    }
    $query = "INSERT INTO images(title,image) VALUES ('".$title."','".$filePath."')";
    mysql_query($query) or die (mysql_error());
}
?>

<form name="Image" enctype="multipart/form-data" action="image.php" method="POST">
<input type="text" name="title" id="title" value=""><br/><br/>
<input type="file" name="Photo" size="20" accept="image/gif, image/jpeg, image/x-ms-bmp, image/x-png"><br/>
<INPUT type="submit" class="button" name="Submit" value=" Submit ">
</form>

3 个答案:

答案 0 :(得分:0)

您无法使用jQuery检查文件,您可以检查它是否具有正确的扩展名。要检查字段是否为空,您可以使用:

if ($('#title').val() === '') {
    // error code
}

您可以使用以下内容检查文件扩展名:

var extension = $('input[name=Photo]').val().split('.').pop();
if (extension !== "gif" && extension !== "jpg") {
    // error code
}

我不确定您是否要使用AJAX发布文件,但您不必这样做。如果您附加表单提交事件的验证,则可以在发生错误时停止提交表单,否则请将其提交给服务器。

$('form').submit(function () {
    var error = false;
    // error checking here

    if (error) {
        return false;
    }
});

答案 1 :(得分:0)

您可以在扩展程序上验证...

$('form').submit(function(event) {
   var file = $('input[type=file]').val();       

   if ( ! file) {
       alert('The file is required.');
       event.preventDefault();
       return;
   } 

   if (file.match(/\.(?:jpeg|jpg|gif)$/)) {
       alert('Image files only!');
       event.preventDefault();
   }

});

...或者您可以验证mime类型。

$('form').submit(function(event) {
   var file = $('input[type=file]').prop('files')[0];

   if ( ! file) {
       alert('The file is required.');
       event.preventDefault();
       return;
   } 

   var mime = file.type;

   if (mime != 'text/jpeg' || mime != 'application/gif') {
       alert('Image only!');
       event.preventDefault();
   }

});

当然,您还需要在服务器上进行验证,此代码仅供JavaScript用户使用。

答案 2 :(得分:0)

我只是使用jQuery验证jQuery库它内置了很多验证,所以你不必担心处理多个条件而且它很容易使用。

http://bassistance.de/jquery-plugins/jquery-plugin-validation/

http://docs.jquery.com/Plugins/Validation