【问题标题】:Show an uploaded image in PHP在 PHP 中显示上传的图像
【发布时间】:2015-11-27 10:54:03
【问题描述】:

这是我的第一篇文章,所以如果我在这篇文章中做错了什么,请告诉我。

我目前正在做一个包含三个子任务的学校任务。

1) 制作一个可以上传图片的 HTML 表单 2) 将 HTML 表单中的数据保存在文本文档中,并将图像放在服务器上 3) 制作一个显示不同条目的页面(包括图像)。

这是我到目前为止所做的。任务1应该是相当正确的。

<!DOCTYPE html>
<html lang="da">

<html>
<head>

    <title>Mobiloversigten</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="stylesheet.css">

</head>

<body>

    <form name="formular" id="formular" method="post" action="process.php" enctype="multipart/form-data" autocomplete="on">

        <fieldset>

            <legend>Enhedsoplysninger</legend>
            <div><label>Producent: <input type="text" name="manufactor" id="manufactor" required="required" size="30"></label></div>
            <div><label>Produktnavn: <input type="text" name="product" id="product" required="required" size="30"></label></div>
            <div><label>Farve: <input type="text" name="color" id="color" required="required" size="30"></label></div>
            <label>Hukommelse:
                <div>    
                    <select size="1" name="memory" id="memory">
                        <option>8GB</option>
                        <option>16GB</option>
                        <option>32GB</option>
                        <option>64GB</option>
                        <option>128GB</option>
                    </select>
                </div>
            </label>
            <div><label>Skærmstørrelse <input type="number" name="displaysize" id="displaysize" min="0" step="0.1" size="30"></label></div>   
            <div><label>Produktbillede: <input type="file" name="productphoto" id="productphoto" required="required" size="30"></label></div>

        </fieldset>

        <div><input type="submit" id="ok" value="Indsend"><input type="reset" id="nulstil" value="Nulstil"></div>

    </form>

</body>

</html>

我的 process.php 页面如下所示:

<!DOCTYPE html>
<html lang="da">

<html>
<head>

    <title>Mobiloversigten</title>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="stylesheet.css">

</head>

<body>

<a href="index.html">Tilføj flere enheder</a>
<a href="overview.php">Vis enheder</a>


<?php

$manufactor = $_POST['manufactor'];
$product = $_POST['product'];
$color = $_POST['color'];
$memory = $_POST['memory'];
$displaysize = $_POST['displaysize'];
$productphoto = $_FILES['productphoto']['name'];


if($_FILES){

            if(strlen($_FILES['productphoto']['type'])==9){

            move_uploaded_file($_FILES['productphoto']['tmp_name'], $product . ".".$rest = substr($_FILES['productphoto']['type'], -3));
            }
            else{move_uploaded_file($_FILES['productphoto']['tmp_name'], $product . ".".$rest = substr($_FILES['productphoto']['type'], -4));

            }
            }

    $user_data = "$manufactor, $product, $color, $memory, $displaysize, $productphoto \r\n";
    $mobile_data = "Producent: ,Produktnavn: ,Farve: ,Hukommelse: ,Skærmstørrelse: ";

    $fh = fopen("data.txt", "a+")   or die("Filen kunne ikke oprettes");
    fwrite($fh, $user_data)         or die("Kunne ikke skrive til filen");
    fclose($fh);

    $fj = fopen("mobile.txt", "w")  or die("Filen kunne ikke oprettes");
    fwrite($fj, $mobile_data)       or die("Kunne ikke skrive til filen");
    fclose($fj);

?>

</body>

</html>

显示所有条目概览的页面如下所示:

<!DOCTYPE html>
<html lang="da">

<html>
<head>
<title>Mobiloversigt</title>
<meta charset="UTF-8">
<link rel="stylesheet" href="style.css">

</head>
<body>

<h1>Tilføjede enheder</h1>
<?php

    fopen("file.txt", "r");
    fopen("mobil.txt", "r");
    $info = explode(",", file_get_contents("mobil.txt"));
    $retrieved_string = file_get_contents("file.txt");

    $retrieved_array = explode("\n", $retrieved_string);

    $count=count($retrieved_array)-1;

for($y = 0; $y < $count; $y++){
$user_data_array = explode(",",$retrieved_array[$y]);
    for($x = 0; $x <= 4; $x++){
            echo "<p>$info[$x]</p><p2>$user_data_array[$x]</p2><br>";
}               echo "<img src=\"$user_data_array[5]\"><br><br>";
            echo "<div><span class=\"linie\"></span></div><br><br>";
}


?>        
</body>
</html>  

总体问题是,图片不显示。我在带有 .php 文件和索引的根文件夹中看到它们。文件,但我的浏览器只显示一个蓝色问号 (Safari),所以它似乎无法识别图像位置,即使我可以在文件夹中看到它。

非常感谢您的帮助! :-)

提前致谢

/克里斯

【问题讨论】:

  • 您在将数据存储在“data.txt”时正在查看“file.txt”
  • 如果您使用 Chrome,请按 F12,转到网络选项卡,然后刷新页面。图像指向的 URL 是否正确? (如在您的文件系统中)
  • 文件路径错误..
  • 使用var_dump($user_data_array[5])查看路径,这很可能是错误的。
  • 即使您查看正确的文件(data.txt),您也会发现 '$_FILES['productphoto']['name']' 作为文件名,但您使用该名称保存文件'$产品。 ".".$rest = substr($_FILES['productphoto']['type'], -4)' 使用 move_uploaded_file 函数。 php.net/manual/en/function.move-uploaded-file.php

标签: php html xampp


【解决方案1】:

在 process.php 中,主要错误是您正在以不同的名称保存照片并且打印 tmp_name 是文件。实际上,两者都应该是相同的要求。稍微改一下代码

 if($_FILES){
       if(strlen($_FILES['productphoto']['type'])==9)
            $name=$product . ".".$rest = substr($_FILES['productphoto']['type'], -3);
       else
            $name=$product . ".".$rest = substr($_FILES['productphoto']['type'], -4);

        move_uploaded_file($_FILES['productphoto']['tmp_name'], $name);

 }

 $user_data = "$manufactor, $product, $color, $memory, $displaysize, $name \r\n";

在overview.php 中,如果您使用file_get_contents,则不需要fopen,因此删除fopen 行,第二个错误更正输入文件名,因为您将数据保存在data.txt mobile.txt,但从 mobil.txtfile.txt 导入数据。否则一切都是正确的。

【讨论】:

  • 非常感谢!非常感谢您的帮助。
猜你喜欢
  • 2021-03-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-26
  • 1970-01-01
  • 2012-07-07
  • 2012-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多