簡體   English   中英

將圖像上傳到數據庫(php)

[英]upload image to database (php)

我創建了簡單的html和php以將圖像(長Blob類型)上傳到數據庫並顯示它。 我嘗試了不同的代碼來實現這一點,但沒有結果。
這段代碼有相同的想法,但是圖像沒有上傳到數據庫中,但是當我使用“ echo”打印名稱和內容時,它就被打印了。 另外,代碼損壞圖像的結果。
我真的不知道這是哪里問題!

upload.php

<form action="upload.php" method="POST" enctype="multipart/form-data"   >
  <label  for="file">Filename:</label>
  <input type="file" name="image" id="image"><br>
  <input type="submit" name="submit" value="Upload">
</form>

<?php
if(isset($_POST['submit']))
{
  mysql_connect("127.0.0.1","root","")or die(mysql_error());
  mysql_select_db("databaseimage") or die(mysql_error());
  $image= mysql_real_escape_string( file_get_contents($_FILES["image"]["tmp_name"]));
  $image_name= mysql_real_escape_string($_FILES["image"]["name"]);

  $image_type= mysql_real_escape_string($_FILES["image"]["type"]);
  $image_size= $_FILES["image"]["size"];

  if(substr($image_type,0,5)=="image")
  {
    mysql_query("INSERT INTO 'store' VALUSE ('','$image_name','$image')");
    echo "Image Uploaded";
    $lastid= mysql_insert_id();
    echo "Image Uploaded. </p> Your Image: </p> <img src=\"get.php?id=$lastid\"/>";
  }
}
?>

get.php

<?php
mysql_connect("127.0.0.1","root","")or die(mysql_error());
mysql_select_db("databaseimage") or die(mysql_error());
if (isset($_GET['id']))
{
  $id= mysql_real_escape_string( $_GET['id']);
  $query=mysql_query("SELECT * FROM 'store' WHERE 'id'='$id'");
  while( $raw=mysql_fetch_assoc($query))
  {
    $imageData=$raw["image"];
  }
  header("Content-type: image/jpeg");
  echo $imageData;
}
else
{
  echo "Error!...";
}
?>

改變'為`:

upload.php

mysql_query("INSERT INTO `store` VALUES ('','$image_name','$image')");

get.php

$query=mysql_query("SELECT * FROM `store` WHERE `id`='$id'");

從PHP 5.5.0開始不推薦使用mysql_ *函數,不建議編寫新代碼,因為將來會刪除它。 相反,應使用mysqliPDO_MySQL擴展名。

mysql_real_escape_string轉義了許多字符,這些字符很可能最終會破壞圖像內部的數據。

如果您擔心SQL注入,則可以嘗試使用b64之類的代碼對其進行編碼,而不是嘗試對其進行轉義(或者更好的是,將編碼與諸如PDO之類的方法結合使用)。

存儲圖像:

$image = base64_encode(file_get_contents($_FILES["image"]["tmp_name"]));

檢索編碼的圖像:

<?php
// decode the image
$imageData = base64_decode($raw["image"]);

// get the file extension
$filename = basename($raw["name"]);
$file_extension = strtolower(substr(strrchr($filename,"."),1));

// set the appropriate content header
switch( $file_extension ) {
    case "gif": $ctype="image/gif"; break;
    case "png": $ctype="image/png"; break;
    case "jpeg":
    case "jpg": $ctype="image/jpg"; break;
    default:
}

header('Content-type: ' . $ctype);

echo $imageData;
?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM