weixin_33737134 2018-02-25 22:54 采纳率: 0%
浏览 40

通过ajax php上传图片

I am trying to upload image through ajax in php but i am getting error Undefined index: logouploader in /home/domainname/public_html/promotionform.php on line 28 I am suffering for 3 days but i am not getting why its happening here is my html form

                            <form id="promotionForm" enctype="multipart/form-data">
                            <div class="form-group">
                                <div class="col-md-12">
                                    <label class="control-label" for="discount">Discount Offers* :</label>
                                    <input type="text" class="form-control" id="discount" placeholder="example 50 percent or 50 dollars" name="discount">
                                    <div class="alert alert-danger hidden mt-lg" id="dnameerrbox"></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12">
                                    <label class="control-label" for="discountitem">Deal / Promo Item* :</label>
                                    <input type="text" class="form-control" id="discountitem" placeholder="example Biryani or All Food" name="discountitem">
                                    <div class="alert alert-danger hidden mt-lg" id="ditemerrbox"></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12">
                                    <label class="control-label" for="website">website :</label>
                                    <input type="text" class="form-control" id="website" placeholder="example homesolver.ca" name="website">
                                    <div class="alert alert-danger hidden mt-lg" id="weberrbox"></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12" id="newdate">
                                    <label class="control-label" for="expirydate">Promotion expires on* :</label>
                                    <input type="text" class="form-control td.active.active" id="expirydate" placeholder="yyyy/mm/dd" name="expirydate">
                                    <div class="alert alert-danger hidden mt-lg" id="proerrbox"></div>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12">
                                    <label class="control-label" for="desc">Promotion / offers detailed description* :</label>
                                    <div class="alert alert-danger hidden mt-lg" id="deserrbox"></div>
                                    <textarea class="form-control" rows="5" id="desc" placeholder="Enter Promotion / offers description" name="desc"></textarea>
                                </div>
                            </div>
                            <div class="form-group">
                                <div class="col-md-12">
                                    <label for="logouploader">Upload Logo Only jpg / png</label>
                                    <input type="file" id="logouploader" name="logouploader">
                                    <p class="help-block">Max 600 kb.</p>
                                    <div class="alert alert-danger hidden mt-lg" id="exterrbox"></div>
                                </div>
                            </div>
                            <div class="col-md-12">
                                <div class="alert alert-danger hidden mt-lg" id="robotError"></div>
                                <div class="form-group">
                                    <div class="g-recaptcha" data-sitekey="6LdZU0QUAAAAABUUQVjOQLbRy6DVMP0kZuOPjg8B"></div>
                                </div>
                            </div>
                            <div><button type="button" id="promotionsubmit" class="btn btn-secondary btn-block">Free Promotion</button></div>
                            <div><button type="button" id="logout" class="btn btn-secondary btn-block mr-xs mt-sm">Logout</button></div>
                        </form>

and i am using custom.js page for validation here is my jquery coding

                /*for business promotion*/
            var dis = /^[a-zA-Z 0-9.,%]*$/;
            $("#discount").keyup(function(){
                discount = $('#discount').val();
                if(!dis.test(discount)){
                    errbox = $("#dnameerrbox");
                    errcontent = "Only alphabets, numbers & % are allowed in discount field";
                    showerror(errbox, errcontent);
                }
                if(dis.test(discount)){
                    errbox = $("#dnameerrbox");
                    errcontent = "";
                    hideerror(errbox, errcontent);
                    discounterr = "no";
                }
            });
            var disitem = /^[a-zA-Z 0-9.,]*$/;
            $("#discountitem").keyup(function(){
                discountitem = $('#discountitem').val();
                if(!disitem.test(discountitem)){
                    errbox = $("#ditemerrbox");
                    errcontent = "Only alphabets, numbers are allowed in discount item field";
                    showerror(errbox, errcontent);
                }
                if(disitem.test(discountitem)){
                    errbox = $("#ditemerrbox");
                    errcontent = "";
                    hideerror(errbox, errcontent);
                    discountitemerr = "no";
                }
            });
            $("#website").keyup(function(){
                website = $('#website').val();
                if(!alphanumeric.test(website)){
                    errbox = $("#weberrbox");
                    errcontent = "https not allowed. write, for ex. homesolver.ca OR www.homesolver.ca";
                    showerror(errbox, errcontent);
                }
                if(alphanumeric.test(website)){
                    errbox = $("#weberrbox");
                    errcontent = "";
                    hideerror(errbox, errcontent);
                    websiteerr = "no";
                }
            });
            var todaydate = new Date();
                $("#expirydate").datepicker({
                    autoclose: true,  
                    format: "yyyy/mm/dd",
                    startDate: todaydate
                });
                $("#expirydate").change(function () {
                    expirydate = $("#expirydate").val();
                    expirydateerr = "no";
                });
            $("#desc").keyup(function(){
                desc = $('#desc').val();
                if(!alphanumeric.test(desc)){
                    errbox = $("#deserrbox");
                    errcontent = "Only alphabets & numbers are allowed in description field";
                    showerror(errbox, errcontent);
                }
                if(alphanumeric.test(desc)){
                    errbox = $("#deserrbox");
                    errcontent = "";
                    hideerror(errbox, errcontent);
                    descerr = "no";
                }
            });
            var ext;
            $("#logouploader").change(function(){
                ext = $('#logouploader').val().split('.').pop().toLowerCase();
                if ($.inArray(ext, ['png','jpg','jpeg']) == -1){
                    errbox = $("#exterrbox");
                    errcontent = "Only png , jpg & jpeg are allowed in logos field";
                    showerror(errbox, errcontent);
                    $("#logouploader").val("");
                }
                else{
                    errbox = $("#exterrbox");
                    errcontent = "";
                    hideerror(errbox, errcontent);
                    logouploader = $("#logouploader").val();
                }
            });
            $("#promotionsubmit").click(function(){
                if((discounterr != "no") || (discountitemerr != "no") || (expirydateerr != "no") ||(descerr != "no")){
                    errbox = $("#robotError");
                    errcontent = "All * fields are mandatory";
                    showerror(errbox, errcontent);
                }
                if((discounterr == "no") && (discountitemerr == "no") && (expirydateerr =="no") && (descerr == "no")){
                    errbox = $("#robotError");
                    errcontent = " ";
                    hideerror(errbox, errcontent);
                    var fd = new FormData();
                    fd.append("discount",discount);
                    fd.append("discountitem",discountitem);
                    fd.append("website",website);
                    fd.append("expirydate",expirydate);
                    fd.append("desc",desc);
                    fd.append("logouploader",logouploader);
                    fd.append("recaptcha",grecaptcha.getResponse());
                $.ajax({
                    url:"promotionform.php",
                    method:"POST",
                    data : fd,
                    contentType: false,
                    processData: false,
                    cache: false,
                    success: function(data){
                        if(data == "notok"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = "please verify you are not robot";
                            showerror(errbox, errcontent);
                        }
                        if(data == "large"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = "image is larger than 600 kb. Allowed size is 600 kb for logo";
                            showerror(errbox, errcontent);
                        }
                        if(data == "wrongext"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = "only jpg, jpeg and png are allowed for logo";
                            showerror(errbox, errcontent);
                        }
                        if(data == "notimage"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = "file is not an image";
                            showerror(errbox, errcontent);
                        }
                        if(data == "Sorry"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = "Sorry, your file was not uploaded.";
                            showerror(errbox, errcontent);
                        }
                        if(data == "done"){
                            grecaptcha.reset();
                            errbox = $("#robotError");
                            errcontent = " ";
                            hideerror(errbox, errcontent);
                            window.location='http://domainname.com/';
                        }
                    }
                });
                }
            });

from here i am passing values to my promotionform.php page and in this page i am trying to put name on my mysql table also want to try put image on my folder here is my code

    <?php
session_start();
    if(isset($_POST['recaptcha'])){
        $secret = "****************";
        $response = $_POST['recaptcha'];
        $remoteip = $_SERVER['REMOTE_ADDR'];
        $url = file_get_contents("https://www.google.com/recaptcha/api/siteverify?secret=$secret&response=$response&remoteip=$remoteip");
        $content = json_decode($url, TRUE);
        if($content['success'] ==1){
            function test_input($data) {
            $data = trim($data);
            $data = stripslashes($data);
            $data = htmlspecialchars($data);
            $data = strtolower($data);
            return $data;
            }
            $discount = test_input($_POST["discount"]);
            $discountitem = test_input($_POST["discountitem"]);
            $website = test_input($_POST["website"]);
            $expirydate = test_input($_POST["expirydate"]);
            $desc = test_input($_POST["desc"]);
            $filename;
            if(isset($_FILES['logouploader']['name'])){
                $filename = basename($_FILES['logouploader']['name']);
                $filename = test_input($filename);
            }
            $dir = "img/uploads/";
            $ext = strtolower(pathinfo($_FILES['logouploader'], PATHINFO_EXTENSION));
            $allowed =  array('jpeg','png' ,'jpg');
            if(!in_array($ext,$allowed) ) {
                echo "wrongext";
                $uploadOk = 0;
                exit;
            }
            if ($_FILES[$filename]["size"] > 600000) {
                echo "large";
                $uploadOk = 0;
                exit;
            }
            if ($uploadOk == 0) {
                echo "Sorry";
                exit;
            }
            $uploadOk = 1;
            if ($uploadOk == 1) {
                move_uploaded_file($_FILES[$filename]["tmp_name"], $dir/$filename);
                $servername = "localhost";
                $username = "*******";
                $password = "*******";
                try {
                    $conn = new PDO("mysql:host=$servername;dbname=********", $username, $password);
                    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                    $query = "INSERT INTO webpromo (discount, dealitem, website, expirydate, description, logouploader) VALUES (?, ?, ?, ?, ?, ?)";
                    $statement = $conn->prepare($query);
                    $statement->execute(
                        array(
                        $discount,
                        $discountitem,
                        $website,
                        $expirydate,
                        $desc,
                        $filename
                        ) );
                        $conn = null;
                        exit;
                        echo "done";
                }
                catch(PDOException $e)
                {
                    echo "Connection failed: " . $e->getMessage();
                }
            }
        }
        if($content['success'] !=1){
            echo "notok";
            $conn = null;
            exit;
        }
        $conn = null;
        exit;
    }
?>
  • 写回答

1条回答 默认 最新

  • weixin_33676492 2018-02-25 23:02
    关注
    logouploader = $("#logouploader").val();
    

    In the line above you are actually retrieving the filename, what you want to pass to the FormData object is a File object

    logouploader = $("#logouploader").prop('files')[0];
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料