图像未使用PHP脚本保存

时间:2017-04-06 23:19:06

标签: javascript php jquery ajax

我有一个非常简单的HTML页面,其中包含一个图片上传表单,如下所示:

<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中发送图像时实际发生的事情的细节。 / p>

1 个答案:

答案 0 :(得分:4)

代码中缺少问题:

Html enctype="multipart/form-data" form上传文件,<input type="file"name="file"

Php move_uploaded_file不正确您错过了['file'] tmp_name $_FILES['file']["tmp_name"]

Ajax dataType:"html"丢失,因此您的ajax从服务器获取响应

更新 Html Php Ajax 代码,如下所示:

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代码:

<?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); 
    } 
});