Servus!
Müsste mal ein aktuelles Problem angehen...
Ich verwende in einem PHP-Tool PhpOffice (/PhpSpreadsheet).
Mit Hilfe dessen, exportiere ich ein paar Daten aus dem Tool als Excel-Tabelle.
In dieser Tabelle werden auch Bild-Dateien vom Server exportiert und dem
entsprechenden Datensatz hinzugefügt.
Dazu verwende ich den folgenden Code:
Das funktioniert auch soweit genau so, wie es soll.
Nun kommt es leider vor - dass an Stelle der .JPG-Files dann .PNG-Files hochgeladen werden,
dessen Endung aber dennoch .jpg ist. Dies erkenne ich mit einem Hex-Editor.
Problem ist es dann, dass die Daten zwar exportiert werden und das Excel-Sheet herunterge-
laden werden kann, ich dieses aber leider nicht öffnen kann.
Finde ich diese fehlerhaften Files und speichere sie erneut als JPG, funktioniert es. Habt ihr einen Vorschlag,
wie ich das Problem auf PHP-Ebene ggf. lösen kann? Ich habe leider noch nicht die Möglichkeit, die Files
direkt auf Ebene der Erstellung vor dem Upload auf dem Server zu korrigieren. Da fehlt mir noch der Zugriff.
Grüße.
Müsste mal ein aktuelles Problem angehen...
Ich verwende in einem PHP-Tool PhpOffice (/PhpSpreadsheet).
Mit Hilfe dessen, exportiere ich ein paar Daten aus dem Tool als Excel-Tabelle.
In dieser Tabelle werden auch Bild-Dateien vom Server exportiert und dem
entsprechenden Datensatz hinzugefügt.
Dazu verwende ich den folgenden Code:
PHP:
$gdImage = imagecreatefromjpeg("excel_upload/uploads_x/$rowID.jpg");
$objDrawing = new \PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing();
$objDrawing->setName('Foto');
$objDrawing->setDescription('Foto');
$objDrawing->setImageResource($gdImage);
$objDrawing->setRenderingFunction(\PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::RENDERING_JPEG);
$objDrawing->setMimeType(\PhpOffice\PhpSpreadsheet\Worksheet\MemoryDrawing::MIMETYPE_DEFAULT);
//$objDrawing->setWidth(60);
$objDrawing->setWidthAndHeight(45,60);
$objDrawing->setResizeProportional(true);
$objDrawing->setCoordinates('G'.$z);
$objDrawing->setOffsetX(8);
$objDrawing->setOffsetY(18);
$objDrawing->setWorksheet($objPHPExcel->getActiveSheet());
$objWriter = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($objPHPExcel, 'Xlsx');
$objWriter->save(str_replace('.php', '.xlsx', __FILE__));
Das funktioniert auch soweit genau so, wie es soll.
Nun kommt es leider vor - dass an Stelle der .JPG-Files dann .PNG-Files hochgeladen werden,
dessen Endung aber dennoch .jpg ist. Dies erkenne ich mit einem Hex-Editor.
Problem ist es dann, dass die Daten zwar exportiert werden und das Excel-Sheet herunterge-
laden werden kann, ich dieses aber leider nicht öffnen kann.
Finde ich diese fehlerhaften Files und speichere sie erneut als JPG, funktioniert es. Habt ihr einen Vorschlag,
wie ich das Problem auf PHP-Ebene ggf. lösen kann? Ich habe leider noch nicht die Möglichkeit, die Files
direkt auf Ebene der Erstellung vor dem Upload auf dem Server zu korrigieren. Da fehlt mir noch der Zugriff.
Grüße.