Sto cercando di salvare i file nel DB usando BLOB. So che non è una buona pratica, ma deve essere fatta in questo modo.Impossibile leggere il PDF convertito da BLOB in Laravel 5?
In ogni caso il problema che sto affrontando è che i file PDF restituiti non sono più leggibili. Ma tutti gli altri file come docx, odt, txt, jpg e così via funzionano bene quando vengono convertiti dal blob.
public function store(Request $request)
{
$data = $request->all();
$file = $request->file('file');
$data['data'] = base64_encode(file_get_contents($file));
$data['extension'] = $file->guessExtension();
$data['name'] = $file->getClientOriginalName();
$file = $this->fileRepo->create($data);
return jsend()->success()
->message("Resource Created Successfully")
->data($file->toArray())
->get();
}
public function download($id)
{
$file = $this->fileRepo->find($id);
$randomDir = md5(time() . $file->id . $file->user->id . str_random());
mkdir(public_path() . '/files/' . $randomDir);
$path = public_path() . '/files/' . $randomDir . '/' . html_entity_decode($file->name);
file_put_contents($path, base64_decode($file->data));
header('Content-Description: File Transfer');
return response()->download($path);
}
Dove sto andando male e c'è un modo speciale per archiviare i PDF in un campo blob?
Forse i commenti [qui] (http://stackoverflow.com/a/8991231/717181) aiuto? – Luceos
Per quanto posso dire, quel ragazzo l'ha risolto usando una lib di terze parti per codificarlo in linee di lunghezza 72, ma non sono sicuro di come farlo nella mia applicazione. Come codificare un file in base64 in php usando una certa lunghezza di linee? – Rohan
Come diversi file prima del caricamento e dopo il download? qualcosa come 'diff before.pdf after.pdf'. –