簡體   English   中英

如何使用php從mySQL DB顯示經過壓縮的Blob文件

[英]How to display a compessed Blob file from mySQL DB with php

我已經編寫了一個Android應用程序,可以將圖像發送到mySQL數據庫。 在將圖像發送到數據庫之前,我先壓縮它以減少流量:

public String getStringImage(Bitmap bmp){
    ByteArrayOutputStream baos = new ByteArrayOutputStream();
    bmp.compress(Bitmap.CompressFormat.JPEG, 100, baos);
    byte[] imageBytes = baos.toByteArray();
    String encodedImage = Base64.encodeToString(imageBytes, Base64.DEFAULT);
    return encodedImage;
}

所以現在我想使用php在我的網站上顯示圖像。 我嘗試使用未壓縮的圖像,並且可以使用以下代碼:

<!DOCTYPE html>
<html>
<body>
<?php
    $id = $_GET['id'];

    $db = mysqli_connect("localhost","user","pass","db-name"); 
    $sql = "SELECT * FROM tbl_images WHERE id = $id";
    $sth = $db->query($sql);
    $result=mysqli_fetch_array($sth);
    echo '<img src="data:image/jpeg;base64,'.base64_encode( $result['imgdata']     ).'"/>';
?>

</body>
</html>

您能幫我壓縮圖像嗎? 謝謝!

1)通過base64編碼,您壓縮圖像所獲得的任何收益都將丟失。 最好將圖像保留為二進制文件並上傳。

2)最好將文件存儲在文件系統上,而不是在數據庫中存儲base64編碼的字符串。 因此,您將在文件記錄中存儲文件名或文件路徑,並在文件系統上存儲實際的二進制文件。 然后,在圖片標簽中,您只需將源作為上傳文件的路徑即可。

3)您的SQL查詢可以進行SQL注入。 如果我將id參數鍵入為“ 1 OR 1 = 1”,查詢將返回什么?

暫無
暫無

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

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