【问题标题】:PHP - uploading photosPHP - 上传照片
【发布时间】:2017-02-18 06:41:30
【问题描述】:

这里是 PHP 新手

我正在尝试制作一个简单的脚本来将照片上传到我的数据库。 我知道这不是很有效,但我还是想这样做。

所以我有这两个 .php 文件:

<html>
<body>
    <form action="upload.php">
        <input type="file" name="photo">
        <input type="submit" name="submit" value="Submit" />
    </form>
</body>

<?php

error_reporting( error_reporting() & ~E_NOTICE );

$conn = mysqli_connect("localhost", "root", "", "poze");

if(!$conn){
    die("Connection failed: ".mysqli_connect_error());
}
else echo "Succes";

$imageName = mysql_real_escape_string($_FILES["image"]["name"]);
//$imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
//$imageType = mysql_real_escape_string($_FILES["image"]["type"]);

if($imageName==NULL){
    echo "Null";
}
else{
    echo "The photo is okay!";
}

上传任何类型的图片后,它都显示为空。

谁能解释一下为什么?我该如何解决?

【问题讨论】:

  • 那是因为您的表单缺少enctype="multipart/form-data"method="post"
  • 嗯,不,它不起作用:-?
  • 你是否包含了我提到的两个属性there
  • 是的,我做到了,它没有用..
  • 哦,看那里,您正在混合 API。 mysqlmysqli 是两个不同的东西。

标签: php upload photos


【解决方案1】:

首先你必须使用这个表单元素:

<form enctype="multipart/form-data" action="upload.php" method="POST">

其次,您必须从临时文件夹中读取文件内容并保存到数据库:

$tmpName  = $_FILES['userfile']['tmp_name'];
$fp      = fopen($tmpName, 'r');
$content = fread($fp, filesize($tmpName));
$content = addslashes($content);
fclose($fp);

然后将此内容保存到 mysql 中 BLOB 类型的字段中。

【讨论】:

    【解决方案2】:

    这里是 PHP 新手

    我正在尝试制作一个简单的脚本来将照片上传到我的数据库。 我知道这不是很有效,但我还是想这样做。

    所以我有这两个 .php 文件:

    <html>
    <body>
        <form action="upload.php">
            <input type="file" name="photo">
            <input type="submit" name="submit" value="Submit" />
        </form>
    </body>
    

    <?php
    
    error_reporting( error_reporting() & ~E_NOTICE );
    
    $conn = mysqli_connect("localhost", "root", "", "poze");
    
    if(!$conn){
        die("Connection failed: ".mysqli_connect_error());
    }
    else echo "Succes";
    
    $imageName = mysql_real_escape_string($_FILES["image"]["name"]);
    //$imageData = mysql_real_escape_string(file_get_contents($_FILES["image"]["tmp_name"]));
    //$imageType = mysql_real_escape_string($_FILES["image"]["type"]);
    
    if($imageName==NULL){
        echo "Null";
    }
    else{
        echo "The photo is okay!";
    }
    

    上传任何类型的图片后,它都显示为空。

    谁能解释一下为什么?我该如何解决?

    解决:

    我更改了 API,以便只使用 mysqli

    索引:

    <html>
    <body>
        <form enctype="multipart/form-data" action="upload.php" method="POST">
            <input type="file" name="photo">
            <input type="submit" name="submit" value="Submit" />
        </form>
    </body>
    

    PHP 脚本:

    <?php
    
    error_reporting( error_reporting() & ~E_NOTICE );
    
    $conn = mysqli_connect("localhost", "root", "", "poze");
    
    if(!$conn){
        die("Connection failed: ".mysqli_connect_error());
    }
    else echo "Succes"."<br>";
    
    $imageName = mysqli_real_escape_string($conn ,$_FILES["photo"]["name"]);
    $imageData = mysqli_real_escape_string($conn, file_get_contents($_FILES["photo"]["tmp_name"]));
    $imageType = mysqli_real_escape_string($conn, $_FILES["photo"]["type"]);
    
    //process the image ...
    

    【讨论】:

      猜你喜欢
      • 2011-06-04
      • 1970-01-01
      • 2014-09-18
      • 1970-01-01
      • 1970-01-01
      • 2012-04-27
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多