当前位置: 首页 > 知识库问答 >
问题:

在PHP中上传图像时出错

江英卓
2023-03-14

注意:未定义索引:第33行C:\xampp\htdocs\page1.php中的图片

警告:pathinfo()要求参数2较长,字符串以C:\xampp\htdocs\page1给出。php第35行对不起,只有JPG,JPEG,PNG

//<?PHP
//session_start();
//if (!isset($_SESSION['login_user'])) {
    //header ("Location: page2.php");/
//}
//?>  
    <html>
    <head>
    <title>Basic Login Script</title>


    </head>
    <body>
    
        
    <?php
           
            
            session_start();
            $servername = "localhost";
            $username = "root";
            $passwor = "";
            $dbname = "form";
            $name = $_SESSION['login_user'];
            echo $name; 
    
    $conn = new PDO("mysql:host=$servername;dbname=form", $username, $passwor);
        
    $stmt = $conn->prepare("SELECT id, username, password FROM users where username='$name'");
    $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); 
    echo "Connected successfully";      
       $target_dir= "htdocs" ."basketball/";
       $target_file = '$target_dir' .basename($_FILES['picture']['name']); //heres an error    
       $uploadOk = 1;
       $imageFileType=pathinfo('$targetfile','PATHINFO_EXTENSION');//heres an error
       
       if(isset($_POST["submit"])) 
       {
        $check = getimagesize($_FILES['picture']['tmp_name']);
        if($check !== false) {
        echo "File is an image - " . $check["mime"] . ".";
        $uploadOk = 1;
       }   
    else {
           echo "File is not an image.";
           $uploadOk = 0;
          }
}
       if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg" && $imageFileType != "gif" ) 
       {
         echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
         $uploadOk = 0;
       } 
       if ($uploadOk == 0) 
       {
         echo "Sorry, your file was not uploaded.";
       } 
       else 
       {
    if (move_uploaded_file($_FILES['picture']['tmp_name'], $target_file)) {
        echo "The file ". basename( $_FILES["picture"]["name"]). " has been uploaded.";
    } else {
        echo "Sorry, there was an error uploading your file.";
    }
}
     ?>
    
    
    
    
    
    
    
    
User Logged in<br/><br/>
<form action="page1.php" method="post" enctype="multipart/form-data">
<input name="picture" type="file" value="picture">
<input name="Upload Now" type="submit" value="Upload Image">
</form>

<P>
<?php

if(isset($_POST['logout'])){
//$_SESSION['user_login'] = '';
//die;
session_destroy();
header("Location: login.php");}
?>
    </body>
    </html>

共有1个答案

毕霖
2023-03-14

您得到第一个警告是因为您在同一个文件中使用了整个代码,而没有使用isset()!在$\u文件数组上清空()。

对此行使用条件语句,并将单引号更改为双引号。变量不会在单引号内解析。

$target_file = '$target_dir' .basename($_FILES['picture']['name']);

if(!empty($_FILES['picture'])){
   $target_file = "$target_dir" .basename($_FILES['picture']['name']);
...
}

这样做,其余的事情就会随之而来。

  • 还要确保文件夹具有适当的写入权限

然而这一行:

$target_dir= "htdocs" ."basketball/"

不清楚,将作为文件夹读取htdocsbasketball。如果这不是您想要的,并且这些是子文件夹,那么在htdocs之后添加一个/

您也没有与条件语句匹配的元素:

if(isset($_POST["submit"]))

我认为这与您的提交按钮被命名为name="Upload Now"相关联

应该读作name="提交"

您可能还想从
中删除value=“picture”

您还将在头之前输出,因此取消注释代码的第一部分,并去掉会话_start() 您现在的位置。

移动session_start();它位于上面的$serverame="localhost";并使用

<?php
session_start();
?>
<html>
<head>
<title>Basic Login Script</title>
...

旁注:

  • 添加退出 在头之后,否则您的代码可能需要继续执行

将错误报告添加到文件顶部,这将有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// rest of your code

旁注:错误报告只应在暂存中完成,而不应在生产中完成。

添加$conn-

$conn = new PDO("mysql:host=$servername;dbname=form", $username, $passwor);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

捕捉其他潜在的错误。

脚注:

>

  • 这一行if(isset($_POST['logout'])){-您发布的代码没有名为logout的元素,除非它不相关。

    既然您使用的是PDO,为什么不在准备好的语句中使用PDO呢?

  •  类似资料:
    • 问题内容: 我无法通过ajax上传多个文件。这是我的代码。 HTML代码: Ajax代码:- 当我通过Ajax调用upload_business_photo_do()函数时,它无法获取图像$ _FILES [‘file’] [‘name’]的名称 问题答案: 尝试这样使用,它简单又容易 并在控制器中使用像这样 并使用此功能将文件数据转换为多个图像数据的数组 它的工作完美,只需尝试使用它。您无需使用

    • 当我用PHP上传imagen时,我没有收到任何错误,并且服务器上的图像是0字节。考虑的事项: 文件上传在phpinfo()中打开。 在phpinfo()中,上传文件的最大大小为8M Upload_tmp_dir已设置并具有777个权限 如果我运行file_exists($_FILES['userfile']['tmp_name']),它将返回true 如果我运行getimagesize($\u F

    • 我想上传视频文件使用php和html表单,php代码和错误如下。 除了视频(.mp4、.flv、.avi)外,我可以上传几乎任何其他类型的文件(图像、zip、文本等)。 savevideo.php: 错误: 我使用了相同的代码(带有图像属性)进行图像上传,并且工作得很好。但是当上传视频时,这给了我很多错误,有些被纠正了。现在我无法将表单中的post数据输入到savevideo.php(我检查了第7

    • 这里的代码在插件中正常工作,但我无法将类似于的结果转换为一个可以在php脚本中使用的图像。任何帮助都会很好。谢谢!

    • 问题内容: 我对jQuery和Ajax函数还比较陌生,但是过去几天一直在使用Ajax表单。我在尝试上传图像时遇到文件上传问题。在寻找资源时,我找不到任何有用的东西,因为它们似乎过于复杂,毫无意义,没有任何解释,这无助于我进一步学习。 我已经编写了以下代码来处理Ajax中的图片上传: 这向文件发送了一个请求,但是没有发送数据,基本上我的表单实际上是这样的: 似乎没有任何数据在标头中传递,我认为我将通