2017-04-06 71 views
1

我有一个图像上传表单一个非常简单的HTML页面如下:图像不被保存在PHP脚本

<form id="file_data"> 
    <input type='file' id='image_uploaded' accept='image'/> 
    <input type='submit' id="upload_image"/> 
</form> 

我的javascript:

$(document).ready(function() { 
    $("form[id='file_data']").submit(function() { 
     var form_data = new FormData(this); 

     $.ajax({ 
      url: "upload.php", 
      type: "POST", 
      data: form_data, 
      processData: false, 
      success: function(data) { 
       alert(data); 
      } 
     }); 
    }); 
}); 

upload.php是创建一个目录来存储图片,如果该目录不存在。然后应该存储在目录中的图像:

<?php 
    define("IMAGE_DIRECTORY", "images"); 

    //If the directory for images does not exist, create it 
    if(!is_dir(IMAGE_DIRECTORY)) { 
     mkdir(IMAGE_DIRECTORY, 0777, true); 
    } 

    move_uploaded_file($_FILES["tmp_name"], IMAGE_DIRECTORY . "\\" .basename($_FILES["file"]["name"])); 
?> 

虽然PHP脚本将创建目录,如果它不存在,它不保存到目录中的任何图片。我假设我没有从PHP正确访问图像,但是我看过的教程并没有解释太多的细节,当图像通过Ajax调用发送到PHP时发生的实际情况。

+1

你的文件输入似乎缺乏一个name属性 –

回答

4

问题你缺少代码:

的Htmlenctype="multipart/form-data"form上传文件,也<input type="file"失踪name="file"

move_uploaded_file不正确你缺少['file']对不对tmp_name $_FILES['file']["tmp_name"]

AjaxdataType:"html"缺少让你的Ajax得到响应,从服务器字符串

更新您的的Html阿贾克斯这样的代码:

HTML代码:

<form id="file_data" enctype="multipart/form-data" method="post"> 
    <input type='file' name='file' id='image_uploaded' accept='image'/> 
    <input type='submit' id="upload_image"/> 
</form> 

菲律宾编号:

<?php 
    define("IMAGE_DIRECTORY", "images"); 

    //If the directory for images does not exist, create it 
    if(!is_dir(IMAGE_DIRECTORY)) { 
     mkdir(IMAGE_DIRECTORY, 0777, true); 
    } 

    move_uploaded_file($_FILES['file']["tmp_name"], IMAGE_DIRECTORY . "\\" .basename($_FILES["file"]["name"])); 
?> 

Ajax代码:

$.ajax({ 
    url: "upload.php", 
    data : form_data, 
    type : "POST", 
    async: false, 
    cache: false, 
    contentType: false, 
    processData: false, 
    dateType : "html", 
    success: function(data) { 
     alert(data); 
    } 
}); 
+0

您可以标记这个答案有帮助,如果你的作品,以便它帮助别人作为well.Thanks –

+0

不幸的是,它不适用于我 – lillemap

+0

我试着回显'move_uploaded_file($ _ FILES ['file'] [“tmp_name”],IMAGE_DIRECTORY。 “\\”.basename($ _ FILES [“file”] [“name”]));'在Ajax调用中成功或失败时显示警报但没有任何回应 – lillemap