Javascript PHP无法正常工作

Javascript PHP无法正常工作,javascript,php,jquery,ajax,forms,Javascript,Php,Jquery,Ajax,Forms,我使用AJAX表单通过AJAX将个人资料图片上传到我的网站上,但问题是我无法做到这一点。我制作了一个php页面,表单将通过ajax发布。看看: <?php $file = $_FILES["file"]; $filename = $_FILES["file"]["name"]; $tempdir = $_FILES["file"]["tmp_name"]; $error = $_FILES["file"]["error"]; $type = $_FILES["file"]["type"];

我使用AJAX表单通过AJAX将个人资料图片上传到我的网站上,但问题是我无法做到这一点。我制作了一个php页面,表单将通过ajax发布。看看:

<?php
$file = $_FILES["file"];
$filename = $_FILES["file"]["name"];
$tempdir = $_FILES["file"]["tmp_name"];
$error = $_FILES["file"]["error"];
$type = $_FILES["file"]["type"];
$size = $_FILES["file"]["size"];

$maxsize = 524288;
$allowedtypes = array("image/png", "image/jpg", "image/jpeg", "image/bmp");

$errormsg = "";
if(!empty($error))
{
    switch($error)
    {
        case '1':
            $errormsg = 'The uploaded file exceeds the upload_max_filesize directive in php.ini';
            break;
        case '2':
            $errormsg = 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form';
            break;
        case '3':
            $errormsg = 'The uploaded file was only partially uploaded';
            break;
        case '4':
            $errormsg = 'No file was uploaded.';
            break;
        case '6':
            $errormsg = 'Missing a temporary folder';
            break;
        case '7':
            $errormsg = 'Failed to write file to disk';
            break;
        case '8':
            $errormsg = 'File upload stopped by extension';
            break;
        default:
            $errormsg = 'No error code avaiable';
    }
} elseif(empty($tmpdir) || $tmpdir == 'none') {
    $errormsg = 'No file was uploaded..';
} elseif(!in_array($type, $allowedtypes) || $size > $maxsize) {
    $errormsg = 'Either image type not supported or size is extending 512 KB';
} else {
    $filename = $_SESSION["username"];
    $filename_array = explode(".",$_POST["filename"]);
    $extension = array_pop($filename_array);
    $path = 'folder/' . Utilities::GetDefaultPicturePath() . $filename . "." . $extension;
    $location = $path . $filename; 
    move_uploaded_file($tmpdir, $location); 
    //for security reason, we force to remove all uploaded file
    @unlink($file);     
}

echo $errormsg;
?>
最后,
ajaxForm()
jquery插件脚本如下:

$('#form').ajaxForm(function (data) {
    console.log(data);
});
正如您所看到的,我正在记录返回的数据。在提交表格时,我总是看到“没有上传任何文件…”。正如您在我的PHP页面上看到的,只有当文件的临时目录为空或设置为“无”时,才会打印该错误

那么问题出在哪里,我该如何解决这个问题呢


谢谢。

您将结果分配给第4行中的$tempdir,然后选中下面的$tmpdir

您将结果分配给第4行中的$tempdir,然后选中下面的$tmpdir

在代码中,您将移动上传的文件逻辑置于最后一个else条件

if(){
  ............................
}
elseif(empty($tmpdir) || $tmpdir == 'none') {
    $errormsg = 'No file was uploaded..';
} elseif(!in_array($type, $allowedtypes) || $size > $maxsize) {
    $errormsg = 'Either image type not supported or size is extending 512 KB';
} else {
    $filename = $_SESSION["username"];
    $filename_array = explode(".",$_POST["filename"]);
    $extension = array_pop($filename_array);
    $path = 'folder/' . Utilities::GetDefaultPicturePath() . $filename . "." . $extension;
    $location = $path . $filename; 
    move_uploaded_file($tmpdir, $location); 
    //for security reason, we force to remove all uploaded file
    @unlink($file);     
}
由于tmpdir在文件移动前为空,因此控制权转到该块:

  elseif(empty($tmpdir) || $tmpdir == 'none') {
        $errormsg = 'No file was uploaded..';
    } 
上述检查应在您将文件移动到该位置后添加


在最后一个else条件中,文件被移动到tmpdir,因此在文件移动后检查该目录,您将在那里找到它。

在代码中,您将移动上传的文件逻辑置于最后一个else条件中

if(){
  ............................
}
elseif(empty($tmpdir) || $tmpdir == 'none') {
    $errormsg = 'No file was uploaded..';
} elseif(!in_array($type, $allowedtypes) || $size > $maxsize) {
    $errormsg = 'Either image type not supported or size is extending 512 KB';
} else {
    $filename = $_SESSION["username"];
    $filename_array = explode(".",$_POST["filename"]);
    $extension = array_pop($filename_array);
    $path = 'folder/' . Utilities::GetDefaultPicturePath() . $filename . "." . $extension;
    $location = $path . $filename; 
    move_uploaded_file($tmpdir, $location); 
    //for security reason, we force to remove all uploaded file
    @unlink($file);     
}
由于tmpdir在文件移动前为空,因此控制权转到该块:

  elseif(empty($tmpdir) || $tmpdir == 'none') {
        $errormsg = 'No file was uploaded..';
    } 
上述检查应在您将文件移动到该位置后添加


在最后一种情况下,文件被移动到tmpdir,因此在文件移动后检查该目录,您会在那里找到它。

如果您查看浏览器控制台的网络检查器,它是否显示正在上载的文件?如果您查看浏览器控制台的网络检查器,它是否显示正在上载的文件?哈哈,夏普,感谢你这么快就发现了对不起,我不明白。你能解释一下吗?:)变量名不同。请注意,您进行赋值
$tempdir=$\u FILES[“file”][“tmp\u name”]
然后选中elseif(空($tmpdir)| |$tmpdir=='none')$tmpdir是未赋值变量,与$TEMPDIR不同。成功了。还有一些其他问题,但我自己解决了。谢谢:)哈哈,夏普,谢谢你这么快就发现了。对不起,我没听懂。你能解释一下吗?:)变量名不同。请注意,您进行赋值
$tempdir=$\u FILES[“file”][“tmp\u name”]
然后选中elseif(空($tmpdir)| |$tmpdir=='none')$tmpdir是未赋值变量,与$TEMPDIR不同。成功了。还有一些其他问题,但我自己解决了。谢谢:)
if(){
  ............................
}
elseif(empty($tmpdir) || $tmpdir == 'none') {
    $errormsg = 'No file was uploaded..';
} elseif(!in_array($type, $allowedtypes) || $size > $maxsize) {
    $errormsg = 'Either image type not supported or size is extending 512 KB';
} else {
    $filename = $_SESSION["username"];
    $filename_array = explode(".",$_POST["filename"]);
    $extension = array_pop($filename_array);
    $path = 'folder/' . Utilities::GetDefaultPicturePath() . $filename . "." . $extension;
    $location = $path . $filename; 
    move_uploaded_file($tmpdir, $location); 
    //for security reason, we force to remove all uploaded file
    @unlink($file);     
}
  elseif(empty($tmpdir) || $tmpdir == 'none') {
        $errormsg = 'No file was uploaded..';
    }