上传图像MYSQL数据库和使用PHP与斯威夫特显示它(Upload image in MYSQL d

2019-09-29 04:06发布

问题陈述:我使用的是斯威夫特和PHP POST请求上传图片中的MySQL数据库。 我能够在数据库中插入选定的图像。 但无法显示。

MySQL表格式:

现在我显示从数据库这个图片到我的本地主机。 这使我产生如下...

斯威夫特文件:

@IBAction func uploadOnServer(sender: AnyObject)
{
    if Description.text == "" || imageView.image == nil
    {

    }
    else
    {
        let img:UIImage = imageView.image!

        let request = NSMutableURLRequest(URL:NSURL(string: "http://localhost/RESTAPI/UploadImage.php")!)
        request.HTTPMethod = "POST"

        let postString = "img=\(img)"
        request.HTTPBody = postString.dataUsingEncoding(NSUTF8StringEncoding)

        let task = NSURLSession.sharedSession().dataTaskWithRequest(request)
        {
            data, response, error in
            print("response =\(response)")

            if error != nil
            {
                print("error=\(error)")
                return
            }
        }
        task.resume()
        Description.text = ""
        imageView.image = nil

    }
}

PHP文件:

<?php

    $host = "localhost";
    $username = "scott";
    $password = "tiger";
    $dbname = "mydb";

    $link = mysqli_connect($host, $username, $password, $dbname);
    $arr = array();

     if($link == true)
    {
        //Displaying images from mysql 
        $select_image="select * from images";// where id=1";

        $var=mysqli_query($link,$select_image);

        echo "<table>";
        while($row=mysqli_fetch_array($var))
        {
            //$desc = $row["Description"];
             $img = $row['image'];

              echo "<tr>";//<td><b>$desc</b></td>";
              echo "<td><img src = '$img' width = 100 height = 100></td></tr>";
        }
    }
    else
    {
        die("ERROR: Could not connect. " . mysqli_connect_error());
    }


    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
        $img = $_REQUEST['img'];
        $sql1 = "INSERT INTO images (image) VALUES ('$img')";
        if(mysqli_query($link, $sql1))
        {
            echo "Image added successfully.";
        } 
        else
        {
            echo "ERROR: Could not able to execute $sql1.mysqli_error($link)";
        }
    }

mysqli_close($link);
?>

Answer 1:

从用户获取的图像

见http://php.net/manual/en/reserved.variables.files.php和http://php.net/manual/en/features.file-upload.php和朋友的如何使用datails $_FILES接收上传。

一旦你有一个变量的形象,说$jpg ,不要用任何文本编码/解码功能; 它只会裂伤的事情。 以下不同的方法会说怎样做才能避免绊倒8位代码。

有三种方式来呈现图像,每个有点复杂

在数据库中存储的图像; 示出图像内联

我已经使用这种方法进行的缩略图,但不建议大图像。

在商店它MEDIUMBLOB在一个表中,使用bin2hex()在PHP中打开图像转换成字符串。 然后使用INSERT ... VALUES (UNHEX('...'))在MySQL服务器端切换回二进制。

重装后,已在引用PHP这样说

$b64 = base64_encode($blob);
echo "<img src='data:image/jpeg;base64,$b64'/>";

在数据库中存储的图像; PHP脚本来生成图像

我用这个当我想用PHP的“形象*”的功能显示它之前来修改图像。 由于这是更多地参与可能比你所需要的,我只会掠过需要做些什么事情。

页面的HTML将调用另一个脚本,你需要的任何参数:

<img src=modify.php?this=stuff&that=stuff>

然后在modify.php ,开始

header('Content-type: image/jpeg');

而与此(假设你正在建设一个JPEG)结束:

imagejpeg($im);

在文件中存储图像

这是大多数大型网站做的大部分时间的首选方式。

如果你的文件来自上传,那么这样的事情能够移动到更好的路径,而无需触摸JPG。

$tmpfile = $_FILES['userfile']['tmp_name'];
move_uploaded_file($tmpfile, $uploadfile);

更多信息和示例: http://php.net/manual/en/function.move-uploaded-file.php

在HTML,简单地生成这样的事情:

<img src=path/to/file>

请在您的服务器的路径,你可以把影像一些研究,并确保权限是足够的。

注:数据库不参与控股的形象,而是有一栏为持有URL "path/to/file"

image VARCHAR(255) NOT NULL

为了进一步讨论

  • 你想哪3项技术,深入挖掘?
  • 让我们来看看你生成HTML。
  • 让我们来看看SHOW CREATE TABLE


Answer 2:

创建与输出回波原始图像文件另一个PHP文件。 这个PHP文件接受,识别图像的$ _GET参数...图像ID就可以了。 然后呼应的图片图像可以被这样的检索:

<img src="imagephpfile.php?id=10" />

其中id是在数据库中的ID .... imagephpfile.php是你做的PHP文件。

该解决方案是与此类似: 不能显示存储在数据库中的BLOB

OR:使用Base64编码像这样的内容:

从MySQL PHP显示图像BLOB



Answer 3:

让我知道如果这能帮助你可能需要稍微调整,但应该做你想要的东西:

<?php

$host = "localhost";
$username = "scott";
$password = "tiger";
$dbname = "mydb";

$link = mysqli_connect($host, $username, $password, $dbname);
$arr = array();

 if($link == true)
{
    //Displaying images from mysql 
    $select_image = "SELECT * FROM images //WHERE id = $id";
    $sth = $link->query($select_image);
    $result=mysqli_fetch_array($sth);

    //$var=mysqli_query($link,$select_image);

    echo "<table>";
        //$desc = $row["Description"];

          echo "<tr>";//<td><b>$desc</b></td>";
          echo '<td><img src="data:image/jpeg;base64,'.base64_encode( $result['image'] ).'"/></td></tr>';
          echo "</table>";
}
else
{
    die("ERROR: Could not connect. " . mysqli_connect_error());
}


if($_SERVER['REQUEST_METHOD'] == "POST")
{
    $img = $_REQUEST['img'];
    $sql1 = "INSERT INTO images (image) VALUES ('$img')";
    if(mysqli_query($link, $sql1))
    {
        echo "Image added successfully.";
    } 
    else
    {
        echo "ERROR: Could not able to execute $sql1.mysqli_error($link)";
    }
}

mysqli_close($link);
?>


文章来源: Upload image in MYSQL database & display it using PHP with Swift