14
次のコードを使用して、画像ファイルをアップロードして別の場所に保存する方法を知っています。しかし、私はそのような方法でユーザーが画像をアップロードし、その画像を私の場所に保存せずに自動的にbase64に変換する必要があります。どうすればいいですか?php画像ファイルをアップロードし、画像を保存せずにbase64に変換する
<?php
//print_r($_FILES);
if(isset($_FILES['image']))
{
$errors=array();
$allowed_ext= array('jpg','jpeg','png','gif');
$file_name =$_FILES['image']['name'];
// $file_name =$_FILES['image']['tmp_name'];
$file_ext = strtolower(end(explode('.',$file_name)));
$file_size=$_FILES['image']['size'];
$file_tmp= $_FILES['image']['tmp_name'];
echo $file_tmp;echo "<br>";
$type = pathinfo($file_tmp, PATHINFO_EXTENSION);
$data = file_get_contents($file_ext);
$base64 = 'data:image/' . $type . ';base64,' . base64_encode($data);
echo "Base64 is ".$base64;
if(in_array($file_ext,$allowed_ext) === false)
{
$errors[]='Extension not allowed';
}
if($file_size > 2097152)
{
$errors[]= 'File size must be under 2mb';
}
if(empty($errors))
{
if(move_uploaded_file($file_tmp, 'images/'.$file_name));
{
echo 'File uploaded';
}
}
else
{
foreach($errors as $error)
{
echo $error , '<br/>';
}
}
// print_r($errors);
}
?>
<form action="" method="POST" enctype="multipart/form-data">
<p>
<input type="file" name="image" />
<input type="submit" value="Upload">
</p>
</form>
画像をbase64に変換した後に、どうしますか? –
実際には、プロジェクトのために、画像ファイルを保存するのではなく、そのbase64をデータベースに保存します。 –
'file_get_contents()'を使用して一時的にアップロードされたファイルの内容を取得します。 'base64_encode()'はエンコードし、 'file_put_contents()'はファイルを保存します。イメージファイルのbase64でエンコードされた表現を格納することは、大きなファイルではRAMの問題にぶつかり、結果ファイルのサイズが元のサイズよりも33%大きくなります。それはなぜですか? –