我可以在图片上传中使用jquery帖子吗? [英] Can I use jquery post with image uploads?

查看:94
本文介绍了我可以在图片上传中使用jquery帖子吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图像这样使用jquery提交我的表单,但它不会触发functions.php文件中的任何内容.我需要对multipart/form-data做一些特殊的事情吗?我想念什么吗?

HTML:

<form id="process_image_form" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="post" >
    <input type="hidden" name="image_id1" id="image_id1" />
    <table class="bordered-table">
        <tbody>                 
            <tr>
                <td><input name="file" type="file" id="file"/></td>
            </tr>
            <tr> 
                <td><button type="submit" class="btn primary" data-loading-text="Uploading..." id="upload_profile_photo" name="upload_profile_photo">Upload</button></td> 
            </tr>
        </tbody>
    </table>
</form>

jQuery调用:

$('#upload_profile_photo').click(function(e) {
   e.preventDefault();

    $.post('gallery/functions.php', $("#process_image_form").serialize(), function(status) {
        if (status.st) {
            alert("Photo Uploaded");
        }
    }, "json");
});

functions.php:

if (isset($_POST['upload_profile_photo'])) {

    if (isset($_FILES['file']) && $_FILES['file']['size'] > 0) {

        //handle file upload
        $size = filesize($_FILES['file']['tmp_name']);
        if ($size > $max_file_size * 1024 * 1024) {
            $res->error = '<div class="alert-message error">Your image file is too large. Reduce its size and try uploading again.</div>';
            echo json_encode($res);
            exit();
        }
        if ($res->error == "") {
            //process image
            $res = uploadImage($_FILES['file']['tmp_name'], $user_id);
            if ($res->st) {
                unlink($_FILES['file']['tmp_name']);
                $res->msg = '<div class="alert-message success">Your profile photo was uploaded successfully!</div>';
                echo json_encode($res);
                exit();
            }
        }
    }
    else {
        $res->error = '<div class="alert-message error">Please select a photo to upload.</div>';
        echo json_encode($res);
        exit();
    }
}

解决方案

jquery序列化方法不适用于文件输入.请看这里:如何异步上传文件?


为此目的,我在 jquery文件上传插件方面经验丰富. /p>

I'm trying to use jquery to submit my form like so but it's not triggering anything in the functions.php file. Do I need to do anything special with a multipart/form-data? Am I missing something?

HTML:

<form id="process_image_form" enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF'], ENT_QUOTES); ?>" method="post" >
    <input type="hidden" name="image_id1" id="image_id1" />
    <table class="bordered-table">
        <tbody>                 
            <tr>
                <td><input name="file" type="file" id="file"/></td>
            </tr>
            <tr> 
                <td><button type="submit" class="btn primary" data-loading-text="Uploading..." id="upload_profile_photo" name="upload_profile_photo">Upload</button></td> 
            </tr>
        </tbody>
    </table>
</form>

Jquery call:

$('#upload_profile_photo').click(function(e) {
   e.preventDefault();

    $.post('gallery/functions.php', $("#process_image_form").serialize(), function(status) {
        if (status.st) {
            alert("Photo Uploaded");
        }
    }, "json");
});

functions.php:

if (isset($_POST['upload_profile_photo'])) {

    if (isset($_FILES['file']) && $_FILES['file']['size'] > 0) {

        //handle file upload
        $size = filesize($_FILES['file']['tmp_name']);
        if ($size > $max_file_size * 1024 * 1024) {
            $res->error = '<div class="alert-message error">Your image file is too large. Reduce its size and try uploading again.</div>';
            echo json_encode($res);
            exit();
        }
        if ($res->error == "") {
            //process image
            $res = uploadImage($_FILES['file']['tmp_name'], $user_id);
            if ($res->st) {
                unlink($_FILES['file']['tmp_name']);
                $res->msg = '<div class="alert-message success">Your profile photo was uploaded successfully!</div>';
                echo json_encode($res);
                exit();
            }
        }
    }
    else {
        $res->error = '<div class="alert-message error">Please select a photo to upload.</div>';
        echo json_encode($res);
        exit();
    }
}

解决方案

jquery serialize method will not work on file inputs. Look here please: How can I upload files asynchronously?


I have a great experience with jquery file upload plugin for this purpose.

这篇关于我可以在图片上传中使用jquery帖子吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆