i'm using this library to upload excel files and store the data from excel to database .. and i want to store images from excel to storage but not succeed .. this is my code
public function addExcel(Request $request)
{
$request->validate([
'file' => 'required'
]);
Excel::load($request->file('file')->getRealPath(), function ($reader) {
foreach ($reader->toArray() as $key => $row) {
$data['model_name'] = $row['model_name'];
$data['part_number'] = $row['part_number'];
if(!empty($data)) {
DB::table('products')->insert($data);
}
}
});
return 'done';
}
It will be via native library used behind this package. For more info on how to get image from excel, this is their documentation link: https://phpspreadsheet.readthedocs.io/en/develop/topics/recipes/#reading-images-from-a-worksheet.
$i = 0; foreach ($spreadsheet->getActiveSheet()->getDrawingCollection() as $drawing) { if ($drawing instanceof \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing) { ob_start(); call_user_func( $drawing->getRenderingFunction(), $drawing->getImageResource() ); $imageContents = ob_get_contents(); ob_end_clean(); switch ($drawing->getMimeType()) { case \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::MIMETYPE_PNG : $extension = 'png'; break; case \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::MIMETYPE_GIF: $extension = 'gif'; break; case \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::MIMETYPE_JPEG : $extension = 'jpg'; break; } } else { $zipReader = fopen($drawing->getPath(),'r'); $imageContents = ''; while (!feof($zipReader)) { $imageContents .= fread($zipReader,1024); } fclose($zipReader); $extension = $drawing->getExtension(); } $myFileName = '00_Image_'.++$i.'.'.$extension; file_put_contents($myFileName,$imageContents); }