2017-09-27 14 views
0

我尝试上传文件,然后将文件名保存到mysql方法是相同的upload & save file to mysql。 但我的问题仍然存在。错误消息是uploadedfile is undefined上传文件和保存文件名失败使用jQuery的ajax模式形式

HTML:

<form id="flowlist"> 
    <div class="form-group"> 
    <label for="idcar" class="control-label">ID CAR</label> 
    <input type="text" name="idcar" id="idcar" class="text_field form-control" required> 
    </div> 
    <div class="form-group"> 
     <label for="upload">Upload Minute Of Meeting</label> 
     <input type="hidden" name="MAX_FILE_SIZE" value="20000000"> 
     <input id="upload" name="uploadedfile" type="file"> 
     <input type="hidden" id="filenm" name="filenm" required> 
     <input type="hidden" name="action" value="updateflow"> 
    </div> 
</form> 

JS脚本(cms.js):

dialog = $("#flow").dialog({ 
     buttons: { 
      "Update Data":function() { 
        var params=$('#flowlist').serialize(); 
        $.ajax({ 
        type:"post", 
        url:"doserver.php", 
        data:params, 
        cache :false, 
        async :false, 
        success : function() { 
         $('input').val(""); 
         $('textarea').val(""); 
         table.row('.selected').draw(false); 
         location.reload(); 
         return this; 
        }, 
        error : function() { 
         alert("Data failed to input."); 
        } 

PHP代码(doserver.php):

case 'updateflow': 
    /* catch variable parameter */ 
    $idcar = mysqli_real_escape_string($dbc,$_POST['idcar']); 
    $file= mysqli_real_escape_string($dbc,$_POST['filenm']); 

    $target_path = "mom/"; 
    $target_path = $target_path . basename($_FILES['uploadedfile']['name']); 
    if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)) 
    { 
     echo "The file ". basename($_FILES['uploadedfile']['name']). " has been uploaded"; 
     /* UPDATE */ 
     $sql ="UPDATE monitor SET Mom = '".$file."'"; 
     $sql.=" WHERE id_car LIKE '".$idcar."'"; 
     $res =mysqli_query($dbc,$sql) or die(_ERROR30.":".mysqli_error($dbc)); 
    } 
     else { echo "There was an error uploading the file, please try again!"; } 
break; 

编辑

添加enctype="multipart/form-data"

<form id="flowlist" enctype="multipart/form-data"> 
</form> 

然后做出一些变化将Ajax功能:

"Update Data":function() { 
    var formData = new FormData(this); 
    $.ajax({ 
     type:"post", 
     url:"doserver.php", 
     processData:false, 
     contentType:false, 
     data:formData, 
    .... 
}); 

我没有错误,但idcar没有更新,文件没有上传。

回答

0

如果你正在使用jquery更好使用$('#flowlist')[0]而不是this。我已经解决了这个使用:

"Update Data":function() { 
    if(window.FormData !== undefined) 
    { 
     var formData = new FormData($('#flowlist')[0]); 
     $.ajax({ 
     type:"post", 
     url:"doserver.php", 
     processData:false, 
     contentType:false, 
     mimeType:"multipart/form-data", 
     data:formData, 
     ... 
     }); 
    } 
}