Javascript 使用ajax和php上载图像失败(无错误日志)

Javascript 使用ajax和php上载图像失败(无错误日志),javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,由于某种原因,我用来上传图像的以下代码失败了。。。 以下是HTML <form id="image_upload" enctype="multipart/form-data" action="uploadImage.php" method="post" name="prof_picture"> <input id="image1" style="display:none;" name="image" accept="image/jpeg" type="file">

由于某种原因,我用来上传图像的以下代码失败了。。。 以下是HTML

<form id="image_upload" enctype="multipart/form-data" action="uploadImage.php" method="post" name="prof_picture">
    <input id="image1" style="display:none;" name="image" accept="image/jpeg" type="file">
    <input id="image2" value="Submit" type="submit" style="display:none;">
</form>
我所知道的肯定是:

正确实现了php脚本,因为我故意使部分代码失败,并获得了有关内部php错误的错误消息

查询正确完成(或至少通过其语法)

与#image相关的javascript函数也在工作

我只想上传一张用户选择的图片(即使他选择了100个其他项目)。但正如我所说,我甚至没有在日志上得到错误消息。。。关于这个有什么想法吗?多谢各位


编辑

我对代码做了一些修改

$ext = strtolower($ext);
    if(in_array($ext,$valid_formats)){
        if ($size < (MAX_SIZE*1024)){ 
            $image_name=time().$user_id."--pfi-".$filename;
            $newname=$uploaddir.$image_name;
                if (move_uploaded_file($_FILES['image']['tmp_name'], $newname)){
                    mysql_query("UPDATE table SET image='$image_name' WHERE id='$user_id'");
                }else echo '<span class="imgList">This message appears </span>'; 
        }else echo '<span class="imgList">You have exceeded the size limit!</span>';
    }else echo '<span class="imgList">Unknown extension!</span>';

编辑2

警告: 移动上传的文件(profile/uploads/1388794617.png): 无法打开流:中没有此类文件或目录 第37行的profile/uploadProfilePicture.php 警告:移动上传的文件():无法将“/tmp/phppFfoL4”移动到 中的“profile/uploads/1388794617.png” 第37行的profile/uploadProfilePicture.php

如何指定$uploaddir甚至$newname?

Edit 这是我用过的。注意注释掉的条件语句

<?php

// include('../sqlconnection.php');
 define ("MAX_SIZE","1000000000");


function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
// if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
// {
    $uploaddir = "profile/uploads/"; //Image upload directory

    $filename = stripslashes($_FILES['image']['name']);

    echo $filename;

    $size=filesize($_FILES['image']['tmp_name']);

    echo $filename;
    //Convert extension into a lower case format
    $ext = getExtension($filename);
    $ext = strtolower($ext);
    //File extension check
    if(in_array($ext,$valid_formats))
    {
    //File size check
    if ($size < (MAX_SIZE*1024))
    { 
    $image_name=time().$filename; 
    echo "<img src='".$uploaddir.$image_name."' class='imgList'>"; 
    $newname=$uploaddir.$image_name; 
    //Moving file to uploads folder
    if (move_uploaded_file($_FILES['image']['tmp_name'], $newname)) 
    { 
    $time=time(); 
    //Insert upload image files names into user_uploads table
//    mysql_query("UPDATE table SET image='$image_name' WHERE id='$user_id'");
    }
    else 
    { 
    echo '<span class="imgList">failed</span>'; } 
    }

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

    } 

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

// }

试试
$uploaddir=“profile/uploads/”如果isset($\U POST)指出任何表单提交。考虑到这是指向此脚本的唯一形式,因此不会有任何其他问题(当然,这并不像应该的那样安全,感谢您指出这一点)。&&关于这一点,你也是对的,但我想,我现在突然想到了。正如保罗提到的,在结尾添加一个
/
。很可能就是这个问题。我以前见过这种情况,它不会显示错误消息,但却没有上传任何东西。@Paul刚才试过,但实际上没有。这可能是调试尝试的早期缺陷。很抱歉,我删除了我的评论,因为我认为这没有什么不同。不客气,就是这样!!但不幸的是,它没有上传。请检查编辑,我会给你正确的答案(确实如此!)我注释掉了DB的东西来测试它,所以这可能是错误的地方@如果我记得的话,我还注释掉了
if(isset($\u POST)和$\u服务器['REQUEST\u METHOD']==“POST”)
。我将添加到我的问题中,确切地说,我使用了什么作为编辑。它是否确实在if中运行?如果它通过了每一个If,那么这个问题就不应该存在了。。。它甚至没有到达查询,所以在if-move\u-uploaded\u文件中不能正常工作很奇怪是的,我的编辑是我使用的,正如所示,我没有偏离它。我只评论了我不需要的东西(DB)以及我认为会麻烦的东西;条件语句
if(isset($\u POST)和$\u SERVER['REQUEST\u METHOD']==“POST”)
@user111671我取出的另一个东西都是表单中的
style=“display:none;”
。我看不到按钮,因为你可能以一种特殊的方式使用它们@用户111671
$ext = strtolower($ext);
    if(in_array($ext,$valid_formats)){
        if ($size < (MAX_SIZE*1024)){ 
            $image_name=time().$user_id."--pfi-".$filename;
            $newname=$uploaddir.$image_name;
                if (move_uploaded_file($_FILES['image']['tmp_name'], $newname)){
                    mysql_query("UPDATE table SET image='$image_name' WHERE id='$user_id'");
                }else echo '<span class="imgList">This message appears </span>'; 
        }else echo '<span class="imgList">You have exceeded the size limit!</span>';
    }else echo '<span class="imgList">Unknown extension!</span>';
array(1) { ["image"]=> array(5) { ["name"]=> string(21) "060424_hubble_big.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(14) "/tmp/phpZYaDkm" ["error"]=> int(0) ["size"]=> int(35641) } }
<?php

// include('../sqlconnection.php');
 define ("MAX_SIZE","1000000000");


function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
// if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
// {
    $uploaddir = "profile/uploads/"; //Image upload directory

    $filename = stripslashes($_FILES['image']['name']);

    echo $filename;

    $size=filesize($_FILES['image']['tmp_name']);

    echo $filename;
    //Convert extension into a lower case format
    $ext = getExtension($filename);
    $ext = strtolower($ext);
    //File extension check
    if(in_array($ext,$valid_formats))
    {
    //File size check
    if ($size < (MAX_SIZE*1024))
    { 
    $image_name=time().$filename; 
    echo "<img src='".$uploaddir.$image_name."' class='imgList'>"; 
    $newname=$uploaddir.$image_name; 
    //Moving file to uploads folder
    if (move_uploaded_file($_FILES['image']['tmp_name'], $newname)) 
    { 
    $time=time(); 
    //Insert upload image files names into user_uploads table
//    mysql_query("UPDATE table SET image='$image_name' WHERE id='$user_id'");
    }
    else 
    { 
    echo '<span class="imgList">failed</span>'; } 
    }

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

    } 

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

// }
include('../sqlconnection.php');
define ("MAX_SIZE","1000");

function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}

$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST") 
{
    $uploaddir = "profile/uploads"; //Image upload directory

    $filename = stripslashes($_FILES['image']['name']);

    echo $filename;

    $size=filesize($_FILES['image']['tmp_name']);

    echo $filename;
    //Convert extension into a lower case format
    $ext = getExtension($filename);
    $ext = strtolower($ext);
    //File extension check
    if(in_array($ext,$valid_formats))
    {
    //File size check
    if ($size < (MAX_SIZE*1024))
    { 
    $image_name=time().$filename; 
    echo "<img src='".$uploaddir.$image_name."' class='imgList'>"; 
    $newname=$uploaddir.$image_name; 
    //Moving file to uploads folder
    if (move_uploaded_file($_FILES['image']['tmp_name'], $newname)) 
    { 
    $time=time(); 
    //Insert upload image files names into user_uploads table
    mysql_query("UPDATE table SET image='$image_name' WHERE id='$user_id'");
    }
    else 
    { 
    echo '<span class="imgList">failed</span>'; } 
    }

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

    } 

    else 
    { 
    echo '<span class="imgList">failed</span>'; 
    } 

}