首页 > 解决方案 > 如何将 Base64 字符串转换为图像?

问题描述

我创建了一个表单来上传图像文件。文件路径、文件名、文件用户和图像数据所有这些细节都被编码成 Base64 字符串并保存在数据库中。编码文件保存在单独的文件夹中。当我从数据库中获取图像数据并解码图像数据并将其保存在另一个文件夹中并从该文件夹中显示时。但我不知道为什么它不显示

提前致谢

<?php
session_start();
include_once 'dbconnect.php';
$ename = base64_encode($_SESSION["email"]);
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <title>File Upload</title>
    </head>
    <?php
        include_once 'adminheader.html';
    ?>
<style type="text/css">
    .bg-info {
    background-color: #7493a2;
}
</style>
    <body>
    <div class="container">
        <form class="form-horizontal"  method="POST" action="upload.php" enctype="multipart/form-data"> 

            Select Image File to Upload:
            <input type="file" name="file" class="form-control" />

            <input type="submit" name="submit" value="Upload" class="btn btn-info"/> 
        </form> 
    </div>

    <?php
    $statusMsg = '';
        if(isset($_POST["submit"])){
            $targetdir = "Upload/";
            $fileName = $_FILES["file"]["tmp_name"];
            $fname = basename($_FILES["file"]["name"]);
            $filePath = realpath($_FILES["file"]["tmp_name"]);
            // echo $filePath;


            $targetFilePath = $targetdir.$fname;
            //echo $targetFilePath;

            $img=file_get_contents($filePath);
            //echo $img;
            $imgdata=base64_encode($img);
            //echo $imgdata;
            //$decryptedfile="decrypted/".$fname;

            //$imgdecode=base64_decode($imgdata);

          // $success = file_put_contents($decryptedfile, $imgdecode);


            $fileType = pathinfo($targetFilePath,PATHINFO_EXTENSION);

            if(isset($_POST["submit"]) && !empty($_FILES["file"]["name"])){
            // Allow certain file formats
            $allowTypes = array('jpg','png','jpeg','gif','pdf');

                if(in_array($fileType, $allowTypes)){
                    $filname = base64_encode($fileName);
                    $filpath = base64_encode($targetFilePath);
                    //echo $filname;
                    //echo $filpath;
                    //echo base64_decode($ename);
                    // Upload file to server

                    //if(move_uploaded_file($targetFilePath,$imgdata)){

                    if(file_put_contents($targetFilePath,$imgdata)){
                        $sql="INSERT into upld_file
                                        (filename,filepath,fileuser,imgdata)
                                values ('$filname','$filpath',
                                        '$ename','$imgdata')";
                        //echo $sql;
                        $insert = mysqli_query($conn,$sql);
                        //echo $filname;
                        //echo $filpath;
                        // echo $ename;
                        if($insert){
                            $statusMsg = "The file ".$fname. " has been uploaded successfully.";
                        }else{
                            $statusMsg = "File upload failed, please try again.";
                        } 
                    }else{
                        $statusMsg = "Sorry, there was an error uploading your file.";

                    }
                }else{
                    $statusMsg = 'Sorry, only JPG, JPEG, PNG, GIF, & PDF files are allowed to upload.';
                }
            }else{
                $statusMsg = 'Please select a file to upload.';
            }
        }
        echo $statusMsg;

        //echo"<script>window.location='upload.php';</script>";

?>
<?php
    $query = "SELECT imgdata 
                FROM upld_file 
                WHERE fileuser='$ename'";
    $result = mysqli_query($conn, $query);

    if(mysqli_num_rows($result) > 0){
        while($row = mysqli_fetch_assoc($result)){
           //echo $image;
            $imgencode=$row["imgdata"];
            //echo $imgencode;
            $imgdecode=base64_decode($imgencode);
            //$filename=base64_decode($row["filename"]);
            $decryptedfile="decrypted/".$fname;
            // echo $decryptedfile;

            $success = file_put_contents($decryptedfile, $imgdecode);

?> 
                <img src="<?php echo $decryptedfile ?>" width="150px">
<?php
        }   
    }   
?>
<body>
</html>
```


[![enter image description here][1]][1]


  [1]: https://i.stack.imgur.com/2ThMC.png

标签: phpbase64decodeencode

解决方案


推荐阅读