0

上传文件时,我的 php 中出现未定义文件错误。

function click_submit_form() {
    var action = "jb_data_charity_submit.php";
    // alert("I step"+$('#id_frm_per_details, #id_frm_acc_details , #id_frm_charity_details').serialize());
    $.ajax({
        url: 'jb_data_charity_submit.php',
        type: 'POST',
        data: $('#id_frm_charity_details').serialize(),
        success: function (data_in) {
            //alert(data_in);
            if (data_in != null && !isEmpty(data_in) && (data_in).indexOf('VALIDATION_ERROR') != -1) {
                var value = data_in.substr(data_in.indexOf('VALIDATION_ERROR'), data_in.indexOf('|#END#'));
                var array_str = value.split('|')

                //alert(array_str[0]);
                //alert(array_str[1]);
                //alert(array_str[2]);

                var id_val = "#id_" + array_str[1].trim();
                show_error(id_val, array_str[2])
            } else {
                window.location.replace('jb_charity_regn_confirm.html');
                alert(data_in);
                // alert("FINAL");
            }
        }
    });
    return false;
}

<form class='form-vertical' id='id_frm_charity_details' name='frm_charity_details' action='jb_data_harity_submit.php' enctype='multipart/form-data'>
    <input id="id_file" name="file" class="input-file" type="file"> <a onclick='click_submit_form();' href="#" class="btn btn-info btn-custom8 btn-large  "><i class=" icon-play"></i> Submit Application</a>
</form>

在我的 php

<?php

$files = $_FILES['file']['name'];
$files_tmp = $_FILES['file']['tmp_name'];
$copy = copy($files_tmp, $files);
//echo $_POST['file'];
move_uploaded_file($files_tmp, "C:\wamp32\www\jb_from_live\src\uploaded_files/" . $files);
?>

如果我使用上面的行,那么它会说未定义的索引“文件”。但是执行不会在 $files=$_FILES['file']['name']; 它说未定义的索引文件之后进行。

4

3 回答 3

0

我建议您使用FormData而不是serialize(). 使用的好处formData是您还可以通过指定它们的内容类型来上传 pdf、xml、JSON 文件。

例如:

var fData = new FormData();
fData.append("XML",  new Blob([ xml ], { type: "text/xml" });
fData.append("JSON", new Blob([ JSON.stringify(json) ], { type: "application/json" }));
fData.append("PDF",  file);
于 2013-10-21T04:51:57.537 回答
0

将图像发送到此格式

$('#form').submit(function() {

    var img=$('#image').val();

    var forms=($(this).serialize());


           $.ajax({
          type:"POST",          
          url: "do.php?do=upload",
          data:forms+'&r='+encodeURIComponent(img),
          success: function(result){ //your code } 


                  });

像这样在你的代码中试试这个

<script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
 <script type="text/javascript">
 function click_submit_form(){

    var action = "jb_data_charity_submit.php";
               // alert("I step"+$('#id_frm_per_details, #id_frm_acc_details , #id_frm_charity_details').serialize());
    var img=$('#id_file').val();

    var forms=($('#id_frm_charity_details').serialize());

                $.ajax({
                    url: 'jb_data_charity_submit.php',
                    type: 'POST',
                    data:forms+'&r='+encodeURIComponent(img),
                   // data: $('#id_frm_charity_details').serialize(),
                    success: function(data_in) {
                        //alert(data_in);
                        if (data_in != null && !isEmpty(data_in) && (data_in).indexOf('VALIDATION_ERROR') != -1) {


                            var value = data_in.substr(data_in.indexOf('VALIDATION_ERROR'), data_in.indexOf('|#END#'));
                            var array_str = value.split('|')


                            //alert(array_str[0]);
                            //alert(array_str[1]);
                            //alert(array_str[2]);

                            var id_val = "#id_" + array_str[1].trim();
                            show_error(id_val, array_str[2])
                        } else {



                            window.location.replace('jb_charity_regn_confirm.html');
                             alert(data_in);
                            // alert("FINAL");
                        }
                    }
                });


                return false;


            }
            </script>
 <form class='form-vertical' id='id_frm_charity_details' name='frm_charity_details' action='jb_data_harity_submit.php' enctype='multipart/form-data' >

<input id="id_file" name="file"  class="input-file" type="file">
 <a onclick='click_submit_form();' href="#" class="btn btn-info btn-custom8 btn-large  "><i class=" icon-play"></i> Submit Application</a>
</form>
于 2013-10-21T04:41:48.700 回答
0

确保您的文件上传表单具有属性 enctype="multipart/form-data" 否则文件上传将无法正常工作。

您不能通过 ajax 上传文件,不幸的是,出于安全原因,js 无法访问文件数据,因此无法通过表单序列化函数发布它。

如果您想验证表单的其他部分然后提交,您可以编写这样的函数

function submit(){
    var valid = true;
    //TODO: check validation on form, set valid to false if incorrect
    if( valid )
        document.forms[0].submit();
    return false;
}

如果您想使用 HTML5,请在这个答案中使用 FormData() 函数:

如何异步上传文件?

否则,如果您要异步上传文件,则必须寻找 jsp 或 flash 后备插件。这是一个非常好的: http: //blueimp.github.io/jQuery-File-Upload/

于 2013-10-21T04:18:52.087 回答