首页 > 解决方案 > 在 Azure 上存储不带 Blob 存储的映像

问题描述

我有一个后端系统,用于将图像序列化为 Azure DB 中的 base64。使用 PHP 我不想使用 blob 存储。我在$_FILES['imgFile']['tmp_name'] 运行时读取上传的文件时说 tmp_path in image not found。ini_set('display_errors', 1); 即使有人在 Azure 中成功完成,也没有说明其他错误?

<?php
ini_set('display_errors', 1);


function endsWith( $haystack, $needle ) {
    $length = strlen( $needle );
    if( !$length ) {
        return true;
    }
    return substr( $haystack, -$length ) === $needle;
}

$conn = require_once 'connect.php';

if (isset($_FILES['imgFile'])) 
{
    $dt = date("Y-m-d H:i:s");
    
    
    if(endsWith(strtolower($_FILES['imgFile']['name']), ".jpg") || $_FILES['imgFile']['type'] === "image/jpeg" || $_FILES['imgFile']['type'] === "image/jpg")
    {
        //echo($_FILES['imgFile']['tmp_name']);
        if(!empty($_FILES['imgFile']['tmp_name']) && file_exists($_FILES['imgFile']['tmp_name'])) {
        $base64ImgData = base64_encode(file_get_contents(addslashes($_FILES['imgFile']['tmp_name'])));
        echo $base64ImgData;
        $tsql = 'INSERT INTO ImgStore(ImgDateStamp, ImgTimeStamp, ImgData) VALUES(?, ?, ?)';
        $params = array($dt, $dt, $base64ImgData);
        $stmt = sqlsrv_query( $conn, $tsql, $params);

        unlink($_FILES['imgFile']['tmp_name']);
        
        echo 'Added image';
    }
    else
    {
        echo 'File is not a JPG';
    }

}
else
{
?>
<!-- The data encoding type, enctype, MUST be specified as below -->
<form enctype="multipart/form-data" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
    <!-- MAX_FILE_SIZE must precede the file input field -->
    <input type="hidden" name="MAX_FILE_SIZE" value="30000" />
    <!-- Name of input element determines name in $_FILES array -->
    Send this file: <input name="imgFile" type="file" />
    <input type="submit" value="Send File" />
</form>
<?    
            
}


?>

标签: phpazure-web-app-serviceazure-sql-database

解决方案


推荐阅读