2013-10-12 11 views
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> 
+0

画像をbase64に変換した後に、どうしますか? –

+0

実際には、プロジェクトのために、画像ファイルを保存するのではなく、そのbase64をデータベースに保存します。 –

+4

'file_get_contents()'を使用して一時的にアップロードされたファイルの内容を取得します。 'base64_encode()'はエンコードし、 'file_put_contents()'はファイルを保存します。イメージファイルのbase64でエンコードされた表現を格納することは、大きなファイルではRAMの問題にぶつかり、結果ファイルのサイズが元のサイズよりも33%大きくなります。それはなぜですか? –

答えて

5

あなたのコードに誤りがあります:

$data = file_get_contents($file_ext); 

これは次のようになります。

$data = file_get_contents($file_tmp); 

これはあなたの問題を解決する必要があります。

関連する問題