利用ajax上传图片并预览

本文介绍了一种使用FormData对象上传图片的方法,并提供了从前端到后端的完整实现示例。通过这种方式,可以实现在用户选择文件后立即预览图片,并通过Ajax异步上传至服务器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)通过FormData对象可以组装一组用 XMLHttpRequest发送请求的键/值对。

         它可以更灵活方便的发送表单数据,因为可以独立于表单使用。

表单部分

<div class="form-group">
                                <label for="lastname" class="col-sm-2 control-label">二维码</label>
                            <div class="col-sm-10">
                                <input id="avatar" type="text" value="" name="avatar" style="width: 400px">
                                <input type="file"  id="qrcode">
                                <img src="" alt="" id="avatarPreview" style="max-width: 350px;max-height: 100px">
                            </div>

<script type="text/javascript">
                                $(function () {
                                    bindAvatar1();
                                });

                                /*Ajax上传至后台并返回图片的url*/
                                function bindAvatar1() {
                                    $("#qrcode").change(function () {
                                        var formData=new FormData();
                                        formData.append('qrcode', $("#qrcode")[0].files[0]);  /*获取上传的图片对象*/
                                        $.ajax({
                                            url: '__CONTROLLER__/uploadImage',
                                            type: 'POST',
                                            data: formData,
                                            contentType: false,
                                            processData: false,
                                            success: function (args) {
                                                console.log(args);  /*服务器端的图片地址*/
                                                $("#avatarPreview").attr('src','/'+args);  /*预览图片*/
                                                $("#avatar").val(args);  /*将服务端的图片url赋值给form表单的隐藏input标签*/
                                            }
                                        })
                                    })
                                }


                            </script>

PHP后台

    /*
     * By Linmin
     * 上传图片
     * */
    public function uploadImage()
    {
        $upload = new \Think\Upload();// 实例化上传类
        $upload->maxSize   =     3145728 ;// 设置附件上传大小
        $upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
        $upload->rootPath  =     './images/'; // 设置附件上传根目录
        $upload->savePath  =     ''; // 设置附件上传(子)目录

        // 上传文件
        $info   =   $upload->upload();
        $savepath=$info['qrcode']['savepath'];
        $savename=$info['qrcode']['savename'];


        $response='./images/'.$savepath.$savename;
        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功
//          $this->success('上传成功!');
            $this->ajaxreturn($response);

        }


    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值