PHP-文件上载不工作

PHP-文件上载不工作,php,file-upload,Php,File Upload,当下面的代码运行时,它只返回echo“未移动文件!” 目标是允许用户上传文件,现在就让它工作吧 account.php <form action="includes/upload.inc.php" method="post" enctype="multipart/form-data"> Select image to upload: <input type="file" name="fileToUpload" id="fileToUpload"> <input ty

当下面的代码运行时,它只返回
echo“未移动文件!”
目标是允许用户上传文件,现在就让它工作吧

account.php

<form action="includes/upload.inc.php" method="post" enctype="multipart/form-data">
Select image to upload:
<input type="file" name="fileToUpload" id="fileToUpload">
<input type="submit" value="Upload Image" name="submit">

选择要上载的图像:

upload.inc.php

<?php
if(isset($_POST['submit'])) {

$uploadsDir = '../uploads/';
$name = basename($_FILES["fileToUpload"]["name"]);
$tempName = basename($_FILES["fileToUpload"]['tmp_name']);
$error = $_FILES['fileToUpload']['error'];

if ($error > 0) {
    echo "Error: " . $error . "<br />";
} else {
    move_uploaded_file($temp_name, "$uploadsDir/$name");

    if(move_uploaded_file($temp_name, "$uploadsDir/$name")) {

        echo "Successful";
        echo "Upload: " . $name . "<br />";
        echo "Stored in: Uploads Directory!";
    } else {
        echo "Did not move files!";
    }
}
}
?>

在本地主机之外托管服务器,最初我认为我的目录没有对rwx的权限,最后我更改了所有用户使用的具有完全权限的目录。这并没有改变结果。

if(isset($\u POST['submit'])){
if(isset($_POST['submit'])) {

$uploadsDir = '/';
$name = ($_FILES["fileToUpload"]["name"]);
$tempName = ($_FILES["fileToUpload"]['tmp_name']);
$error = $_FILES['fileToUpload']['error'];

if ($error > 0) {
    echo "Error: " . $error . "<br />";
} else {

    if(move_uploaded_file($tempName, __DIR__.'/'.$name)) {

        echo "Successful";
        echo "Upload: " . $name . "<br />";
        echo "Stored in: Uploads Directory!";
    } else {
        echo "Did not move files!";
    }
}
}
$uploadsDir='/'; $name=($_文件[“fileToUpload”][“name”]); $tempName=($_文件[“fileToUpload”]['tmp_名称]); $error=$_文件['fileToUpload']['error']; 如果($error>0){ 回显“错误:.”错误“
”; }否则{ if(移动上传的文件($tempName,uuuu DIR.'/'.$name)){ 呼应“成功”; echo“上传:”.$name.“
”; echo“存储在:上传目录!”; }否则{ echo“没有移动文件!”; } } }
您有3个错误:

  • 您调用了两次
    move\u上传的文件
  • 您声明了
    $tempName
    变量,但在
    移动上传的文件
    函数中使用了
    $tempName
  • 声明临时文件路径变量时使用了
    basename
  • 您的最终代码应该如下所示:

    if (isset($_POST['submit'])) {
        $uploadsDir = '../uploads/';
        $name = basename($_FILES["fileToUpload"]["name"]);
        $tempName = $_FILES["fileToUpload"]['tmp_name'];
        $error = $_FILES['fileToUpload']['error'];
    
        if ($error > 0) {
            echo "Error: " . $error . "<br />";
        } else {
            if (move_uploaded_file($tempName, "$uploadsDir/$name")) {
    
                echo "Successful";
                echo "Upload: " . $name . "<br />";
                echo "Stored in: Uploads Directory!";
            } else {
                echo "Did not move files!";
            }
        }
    }
    
    if(isset($\u POST['submit'])){
    $uploadsDir='../uploads/';
    $name=basename($_文件[“fileToUpload”][“name”]);
    $tempName=$\u文件[“fileToUpload”]['tmp\u名称];
    $error=$_文件['fileToUpload']['error'];
    如果($error>0){
    回显“错误:.”错误“
    ”; }否则{ 如果(移动上传的文件($tempName,“$uploadsDir/$name”)){ 呼应“成功”; echo“上传:”.$name.“
    ”; echo“存储在:上传目录!”; }否则{ echo“没有移动文件!”; } } }
    因为您已经在前一行中移动了它。您应该只运行一次
    move\u upload\u file($temp\u name,“$uploadsDir/$name”)
    。如果您在本地主机之外托管,您必须指定目录,包括外部服务器的名称host@HtmHell执行此操作后仍然返回相同的错误消息。现在,您应该确保目录存在且可写。您可以使用
    var_dump(is_dir($uploadsDir)和&is_writeable($uploadsDir))检查此情况@Fredrawlings这也不成功