Ich bräuchte einmal Hilfe beim Schreiben eines Media Files. Ich möchte gerne ein Media File mit einem Bild erzeugen.
Mein Bild liegt base64 kodiert vor
const EINS = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7KoorjvjHrnirw54A1HWfB+k2Op6jaxtK0d5P5cccSozPJ/tEYHy5Gc9aAOxorg/2f/FOq+Nfg/4e8Ua2YDqGoQPJMYY9iZErqMLk44UV3lABWN440651fwXrmlWYQ3N7p1xbw722rveJlXJ7DJHNbNFAHCfADwtqvgr4P+HvC+tiAahp8DxzeTJvTJldhhsDPDCu7oooA//Z';
Gibt man den String in eine Browserzeile ein, dann wird das Bild auch angezeigt:
Aber wenn ich im Skript versuche, das Bild einem Media-File zuzuordnen, dann gelingt es nicht. Das File wird zwar angelegt, aber die Länge ist 0. Auch wird es weder in der Konsole noch in der Visu angezeigt.
Dies ist mein Testscript:
<?php
/**
* genutzte globale Variablen:
* @var array $_IPS
*/
declare(strict_types=1);
const EINS = 'data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAUDBAQEAwUEBAQFBQUGBwwIBwcHBw8LCwkMEQ8SEhEPERETFhwXExQaFRERGCEYGh0dHx8fExciJCIeJBweHx7/2wBDAQUFBQcGBw4ICA4eFBEUHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh4eHh7/wAARCAAgACADASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/8QAHwEAAwEBAQEBAQEBAQAAAAAAAAECAwQFBgcICQoL/8QAtREAAgECBAQDBAcFBAQAAQJ3AAECAxEEBSExBhJBUQdhcRMiMoEIFEKRobHBCSMzUvAVYnLRChYkNOEl8RcYGRomJygpKjU2Nzg5OkNERUZHSElKU1RVVldYWVpjZGVmZ2hpanN0dXZ3eHl6goOEhYaHiImKkpOUlZaXmJmaoqOkpaanqKmqsrO0tba3uLm6wsPExcbHyMnK0tPU1dbX2Nna4uPk5ebn6Onq8vP09fb3+Pn6/9oADAMBAAIRAxEAPwD7KoorjvjHrnirw54A1HWfB+k2Op6jaxtK0d5P5cccSozPJ/tEYHy5Gc9aAOxorg/2f/FOq+Nfg/4e8Ua2YDqGoQPJMYY9iZErqMLk44UV3lABWN440651fwXrmlWYQ3N7p1xbw722rveJlXJ7DJHNbNFAHCfADwtqvgr4P+HvC+tiAahp8DxzeTJvTJldhhsDPDCu7oooA//Z';
$mediaId = IPS_CreateMedia(MEDIATYPE_IMAGE); // Image im MedienPool anlegen
IPS_SetMediaCached($mediaId, false);
IPS_SetName($mediaId, 'Media');
IPS_SetParent($mediaId, $_IPS['SELF']);
IPS_SetIdent($mediaId, 'Media');
var_dump(IPS_SetMediaFile($mediaId, '/media/TestMedia.jpg', false));
var_dump(IPS_SetMediaContent($mediaId, EINS));
Als Ausgabe kommt
bool(true)
bool(true)
Da bin ich momentan ratlos. Ich vermute, beim IPS_SetMediaContent läuft etwas schief, obwohl der Return true ist.
