Uploading image transforming to base64 - laravel

0

I'm having trouble receiving data from my View and transforming it to base 64 , in controller I'm doing this:

 public function store(ImagemRequest $resquest){
    dd($resquest->all()); //Nest dd aparece ex0.1
    $file = base64_encode($resquest->file('BLOB'));

    dd($file);
    $imagem = Produto::create([
        'CdProduto' => $resquest->CdProduto,
        'NmImagem' => $resquest->NmImagem,
        'DscImagem' => $resquest->DscImagem,
        'BLOB' => $file,
        'FlgPrincipal' => $resquest->FlgPrincipal
    ]);

    session()->flash('flash_message', 'Imagem salva com sucesso');

    $imagens =  Imagem::where('CdProduto', $resquest->CdProduto);
    $produto = Produto::find($resquest->CdProduto);


    if(Request::wantsJson()){
        return $imagem;
    }else{
        return view('Imagem.listImagem', compact('imagens', 'produto'));
    }
}

Example

array:6 [▼
"_token" => "RiIW0uXbqk1cZ5FGSKTZzQHlDtUoK1sSN2ImHjfW"
  "CdProduto" => "1"
  "NmImagem" => "eqweqwe"
  "DscImagem" => "qweqwe"
  "FlgPrincipal" => "0"
  "BLOB" => "12822161_1045978208829439_1942486736_n.jpg"
]

My form looks like this:

    {!! Form::open(['route' => 'imagens.store', 'id' => 'imagens-form']) !!}
        <div class="box-body">
{!! Form::text('CdProduto', $produto->CdProduto, ['class' => 'form-control hidden']) !!}
<div class="form-group">
    {!! Form::label('nmTipoProduto', 'Nome da imagem') !!}
    {!! Form::text('NmImagem', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
    {!! Form::label('dscTipoProduto', 'Descrição da imagem') !!}
    {!! Form::text('DscImagem', null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
    {!! Form::label('flgPrincipal', 'Principal ?') !!}
    {!! Form::radio('FlgPrincipal', '1', false, ['class' => 'form-control minimal']) !!}
    {!! Form::label('flgPrincipal', 'Sim') !!}
    {!! Form::radio('FlgPrincipal', '0', true, ['class' => 'form-control minimal']) !!}
    {!! Form::label('flgPrincipal', 'Não') !!}
</div>
<div class="form-group">
    {!! Form::file('BLOB') !!}
    <img id="blah" src="#" alt="" />
</div>
<br>
<div class="form-group">
    {!! Form::submit($submitButton, ['class' => 'btn btn-success']) !!}
    {!! link_to_route('imagens.index', 'Voltar', $produto->CdProduto, ['class' =>  'btn btn-warning' ]) !!}
</div>
</div>     
{!! Form::close()  !!}

I want to save my image in base64 but in the Blob field the name is just coming.

    
asked by anonymous 17.09.2016 / 05:13

1 answer

2

To transform a file of any type, coming from a input type file using classe Request present in the

public function store(Request $request) 
{
    $file = $request->file('BLOB');
    $name = $file->getPathName();
    $mime = \Storage::mimeType($name);
    $file = base64_encode(file_get_contents($name));
    $src  = 'data: '.$mime.';base64,'.$file;
}

The value of the $src variable is what you need. In your case it is an image so it is easy to open this image as it was placed in the code.

If the image is fixed in the jpg extension:

$src = 'data: image/jpeg;base64,'.$file;

To upload the image:

<img src="<?php echo $src; ?>" border="0" />

References

17.09.2016 / 05:43