Как отображать изображения в формате php? - PullRequest
0 голосов
/ 02 августа 2020

У меня проблемы с отображением изображения в php. В первом файле у меня есть вход, который получает изображение. <input type="file" name="imageOrVideo" accept="video/*,image/*" multiple>. Во втором файле php я хочу получить изображение и отобразить его. Я получаю файл, используя $imageOrVideo = $_POST['imageOrVideo'];. Если я повторяю $ imageOrVideo, все, что я получаю, - это строка. Я пробовал использовать echo img echo "<img src=Image/".$imageOrVideo."/>"; и echo "<img src=".$imageOrVideo."/>";, но ни один из них не работал. Я читал, что вы можете отображать только строки, поэтому, возможно, мне не следует использовать echo, а использовать какой-то другой метод для отображения изображения. Вот полный код, чтобы увидеть, где может быть проблема. Спасибо за любую помощь. Это первый файл.

<!DOCTYPE html>
<html>
<head>
    <title>Create Recipe</title>
    <link rel="stylesheet" type="text/css" href="../CSS/createRecipe.css">
</head>
<body>

<div class="topnav">
    <a href="includes/logout.inc.php">Sign Out</a>
    <a href="">My Recipes</a>
    <a href="index.php">Home</a>
</div>

<form action="includes/createRecipe.inc.php" method="post">
<div class="leftSide">

<input type="file" name="imageOrVideo" accept="video/*,image/*" multiple><br><br>
<!--
 <input type="file" name="imageOrVideo" accept="image/*" ><br><br>
 --> 


<div class="prepTimeCookTime">
<label>Prep Time</label><br><br>
<textarea type="" name="prepTime" class="prepTime"> </textarea><br>

<label>Cook Time</label><br><br>
<textarea type="" name="cookTime" class="cookTime"> </textarea><br>
</div>

<div class="readyTimeNumberOfServings">
<label></label>Ready Time<br><br>
<textarea type="" name="readyTime" class="readyTime"> </textarea><br>

<label>Number of Servings</label><br><br>
<textarea type="" name="numberOfServings" class="numberOfServings"> </textarea><br>
</div>
</div>

<div class="rightSide">
<label>Recipe Title</label><br><br>
<textarea type="" name="recipeTitle" class="recipeTitle"> </textarea><br>

<label>Description</label><br><br>
<textarea type="" name="description" class="description"> </textarea><br>

<label>Ingrediants</label><br><br>
<textarea type="" name="ingredients" class="ingredients" placeholder="Put each ingrediant on its own line."></textarea><br>

<label>Directions</label><br><br>
<textarea type="" name="directions" class="directions" placeholder="Put each step on its own line."></textarea><br>

<button type="submit" name="recipe-submit">Submit</button>
</div>
</form>

</body>
</html>

Вот второй файл.

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

        require 'dbh.inc.php';
        session_start();
        

        $imageOrVideo = $_POST['imageOrVideo'];
        $uidUsers = $_SESSION['userUid'];
        $prepTime = $_POST['prepTime'];
        $cookTime = $_POST['cookTime'];
        $readyTime = $_POST['readyTime'];
        $numberOfServings = $_POST['numberOfServings'];
        $recipeTitle = $_POST['recipeTitle'];
        $description = $_POST['description'];
        $ingredients = $_POST['ingredients'];
        $directions = $_POST['directions'];
        
        //echo "<img src='" . $_POST['imageOrVideo'] . "' alt='img'>";
        //echo "<img src='/images/test/" . $_POST['imageOrVideo'] . "' alt='img'>";
        //print $imageOrVideo;
        //echo  "<img src=".$imageOrVideo."/>";
        //echo "<img src=Image/".$imageOrVideo."/>";


        

/*
        $sql = "INSERT INTO recipes (videoOrImages, uidUsers, prepTime, cookTime, readyTime, numberOfServings, recipeTitle, description, ingredients, directions) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                    $stmt = mysqli_stmt_init($conn);
                    if(!mysqli_stmt_prepare($stmt, $sql)){
                        header("Location: ../createRecipe.php?error=sqlError");
                        exit();
                    }
                    else{
                        mysqli_stmt_bind_param($stmt, "bsssssssss", $imageOrVideo, $uidUsers, $prepTime, $cookTime, $readyTime, $numberOfServings, $recipeTitle, $description, $ingredients, $directions);
                        mysqli_stmt_execute($stmt);
                        header("Location: ../index.php?signup=success");
                        exit();
                    }   
                
                    

            mysqli_stmt_close($stmt);
            mysqli_close($conn);
            
            */
    }

    else{
        header("Location: ../createRecipe.php");
        exit();
    }

        

1 Ответ

0 голосов
/ 02 августа 2020

Как я уже упоминал в комментарии, вы фактически не управляете загруженным файлом. попробуйте что-то вроде этого:

    $uidUsers = $_SESSION['userUid'];
    $prepTime = $_POST['prepTime'];
    $cookTime = $_POST['cookTime'];
    $readyTime = $_POST['readyTime'];
    $numberOfServings = $_POST['numberOfServings'];
    $recipeTitle = $_POST['recipeTitle'];
    $description = $_POST['description'];
    $ingredients = $_POST['ingredients'];
    $directions = $_POST['directions'];
    $imageOrVideo = $_POST['imageOrVideo'];

    $uploaddir = 'uploads/'; //or wherever you want to upload the file
    $uploadfile = $uploaddir . basename($_FILES['file']['name']);
    $imageuploaded = 1;
    $imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

   // then check to see if its actually an image

   $check = getimagesize($_FILES["file"]["tmp_name"]);
   if($check !== false) {
   echo "File is an image";
   $imageuploaded = 1;
   } else {
   echo "File is not an image.";
   $imageuploaded = 0;
   }

   // you can check to see if the file already exists
  
   if (file_exists($target_file)) {
   echo "Sorry, file already exists.";
   $imageuploaded = 0;
   }

   // then process the file

  if ($imageuploaded == 0) {
  echo "Sorry, your file was not uploaded.";

  // if everything is ok, try to upload file

  } else {

  if (move_uploaded_file($_FILES["file"]["tmp_name"], $uploadfile)) {
  echo "The file ". basename( $_FILES["file"]["name"]). " has been uploaded.";
  } else {
  echo "Sorry, there was an error uploading your file.";
    }
  }

, если вы хотите убедиться, что это конкретный тип файла c, вы можете попробовать что-то вроде этого:

  // Allow certain file formats

  if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
  && $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
  }

Я не тестировал код, но он должен работать или, по крайней мере, направить вас на правильный путь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...