14
다음 코드를 사용하여 이미지 파일을 업로드하고 다른 위치에 저장하는 방법을 알고 있습니다. 그러나 사용자가 이미지를 업로드하고 내 위치에 이미지를 저장하지 않고 자동으로 base64로 변환하는 등의 작업을 수행해야합니다. 어떻게해야합니까?PHP 이미지 파일을 업로드하고 이미지를 저장하지 않고 base64로 변환
$data = file_get_contents($file_ext);
이 있어야한다 :
$data = file_get_contents($file_tmp);
이이 문제를 해결해야
<?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 % 커집니다. 그 이유는 무엇입니까? –