[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Redaxo 4.2.1 Medienpool Datei kann nicht ausgetauscht werden - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
fietstouring
Beiträge: 47
Registriert: 10. Okt 2006, 12:30
Wohnort: Wien
Kontaktdaten: Website

Redaxo 4.2.1 Medienpool Datei kann nicht ausgetauscht werden

23. Nov 2009, 13:02

Ich kann im Medienpool zwar problemlos Bilder (jpeg) austauschen (also Aktualisieren), versuche ich dies aber mit einem *.js File, bekomme ich die meldung "Datei kann nicht ausgetauscht werden, weil sie von einem anderen Dateityp ist",

was Unsinn ist, da die datei ja auch eine js ist.

ACh0013
Beiträge: 6
Registriert: 29. Jul 2009, 15:05

2. Dez 2009, 11:58

Kann mich da anschliessen, allerdings ist es bei mir mit den css-Dateien so.

Gibt es da schon eine Lösung? Oder einen Hinweis, wo das Problem liegen könnte?

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

17. Dez 2009, 12:00

Hab hier das gleiche Problem..
Weder pdf, txt oder sonstige Dateien die keine Bilder sind, können ausgetauscht werden.

Ich bitte dringend um Korrektur.
Bitte Bitte ...

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

19. Dez 2009, 22:31

Dateien unterschiedlichen Typs können untereinander nicht ausgetauscht werden. Der Dateityp wird vor dem ersetzen geprüft!

Beim Austausch bekommt die neue Datei den gleichen Namen, wie die bisherige Datei! Also wenn test.js schon drin ist und test2.js soll diese ersetzen, so steht nach dem Austausch immer noch test.js da. Die Dateien wurden aber trotzdem ausgetauscht.

Zum testen ob es am Dateityp liegt, kann folgendes gemacht werden.
Gehe in die Datei redaxo/include/functions/function_rex_mediapool.inc.php Zeile 196 und füge dort ein:
var_dump($ffiletype);
Nun wird im Medienpool immer der Dateityp mit ausgegeben.
zB.: string 'application/javascript' (length=22)
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Dümm
Beiträge: 5
Registriert: 24. Nov 2009, 16:11

21. Dez 2009, 00:02

Das Problem scheint daran zu liegen, dass zwar beim Hochladen von Dateien die Mime-Types richtig eingetragen werden in der Datenbank, aber nicht beim Synchronisieren. Da wird anscheinend nur bei Bildern je nach Dateiendung der Mime-Type zugeordnet. Und jeder Mime-Typ beim Ersetzen (Hochladen) ist natürlich ungleich dem leeren Eintrag in der Datenbank.

Benutzeravatar
kaiuwe
Beiträge: 40
Registriert: 26. Jan 2009, 23:09
Wohnort: Wesel

21. Dez 2009, 22:29

Ich habe das gleiche Problem und würde gerne auf diesen Check verzichten.
Kann ich das irgendwo abstellen?
Ich möchte PDFs durch PDFs ersetzen und das klappt nicht.
--------------------------------------------------
Auch diese Google wird irgendwann platzen.
Befreit Euch davon. Und surft endlich frei.

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

21. Dez 2009, 23:08

Dümm hat geschrieben:Das Problem scheint daran zu liegen, dass zwar beim Hochladen von Dateien die Mime-Types richtig eingetragen werden in der Datenbank, aber nicht beim Synchronisieren.
Kann ich nicht bestätigen.
Bei meinen lokalen Tests wurde der Mime-Typ immer richtig erkannt (mit FF3.5.6).
Hier wäre es interessant zu erfahren, wo genau das Problem liegt. Dazu würde es schon mal helfen, wenn jemand mit dem benannten Problem meinen Test zur ständigen Ausgabe des Mime-Typs ausprobieren würde.

Da der Mime-Typ direkt vom Browser an den Server gesendet wird, könnte es auch am Client (Browser) liegen, wenn es zu Mißverständnissen zwischen dem alten und dem neuen Mime-Typ kommt.
Bei Problemen mal einen anderen Browser verwenden und sehen, was da so passiert.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
kaiuwe
Beiträge: 40
Registriert: 26. Jan 2009, 23:09
Wohnort: Wesel

22. Dez 2009, 00:41

Also bei mir ist es egal ob ich IE Firefox oder Safari verwende ... ich kann die PDFs nicht tauschen.
Nebenbei verstehe ich nicht, warum ich darüber hinaus ein JPG nicht durch ein GIF ersetzten darf. Es ist doch ein Bild. Auch finde ich, dass man PDFs durchaus auch durch txt, rtf oder doc ersetzen können dürfte.
Wozu ist der MIME-Typ in der Datenbank überhaupt gut? Es erschließt sich mir nicht. Wird doch von keinem Modul genutzt.

Und wenn es doch ein Client-Problem ist. Ist das Problem umso größer, da man davon ausgehn muss, dass die Redakteure unterschiedliche Browser verwenden.

Kann jetzt leider nicht testen ... :-( , Erst nach Neujahr
--------------------------------------------------
Auch diese Google wird irgendwann platzen.
Befreit Euch davon. Und surft endlich frei.

Dümm
Beiträge: 5
Registriert: 24. Nov 2009, 16:11

25. Dez 2009, 03:14

Koala hat geschrieben:
Dümm hat geschrieben:Das Problem scheint daran zu liegen, dass zwar beim Hochladen von Dateien die Mime-Types richtig eingetragen werden in der Datenbank, aber nicht beim Synchronisieren.
Kann ich nicht bestätigen.
Bei meinen lokalen Tests wurde der Mime-Typ immer richtig erkannt (mit FF3.5.6).
Ich muss nocheinmal betonen, der Test des Mime-Types beim Upload nur per Browser mag vielleicht aufgehen, weil der Browser, wie du selbst gesagt hast, den Mime-Type mitsendet. ABER wenn man vorher die Dateien per FTP in den File-Ordner hochlädt und dann die Synchronisieren-Funktion verwendet vom Medienpool, dann wird (ich habe nochmal nachgesehen im Quellcode) die PHP-Funktion mime_content_type verwendet. Diese Funktion ist schon laut der PHP-Doku nicht sehr zuverlässig. Daher werden, wenn man seine Dateien anfangs synchronisiert je nach der mehr oder weniger vollständigen Mime-Type Tabelle, aus der diese PHP-Funktion ihre Werte holt, auch mal leere Werte in die Datenbank eingetragen.
So jetzt kann der Browser noch so richtige Mime-Types senden, wenn der Eintrag in der Datenbank durch dieses "Synchronisations-Wirrwarr" leer ist, dann denkt das Script halt immer bei jedem Upload, dass der Mime-Type unterschiedlich ist, weil einfach keiner eingetragen ist in der DB.

Ich persönlich (das mag nicht viel heißen) sehe momentan nur zwei Möglichkeiten um mit manchen leeren Mime-Types beim Synchronisieren klazukommen:
1.) Man bastelt sich selber eine Funktion zur Erkennung der Mime-Types anhand der Dateiendung oder
2.) man macht diesen kleinen Dirty-Trick im Medienpool-Script:

In der rex_mediapool_updateMedia Funktion in der function_rex_mediapool.inc.php fügt man bei der zweiten If-Bedingung Folgendes hinzu um leere Typen in der Datenbank beim nächsten Upload überschreiben zu lassen, ab dann sollte der Mime-Type richtig in der Datenbank stehen:

Code: Alles auswählen

$FILEINFOS["filetype"] == '' || 
Die Bedingung sollte dann insgesamt so aussehen:

Code: Alles auswählen

if ($FILEINFOS["filetype"] == '' || $ffiletype == $FILEINFOS["filetype"] || OOMedia::compareImageTypes($ffiletype,$FILEINFOS["filetype"]))

Benutzeravatar
Koala
Beiträge: 1612
Registriert: 3. Okt 2005, 13:20

25. Dez 2009, 14:40

Dümm hat geschrieben:Ich muss nocheinmal betonen, der Test des Mime-Types beim Upload nur per Browser mag vielleicht aufgehen, weil der Browser, wie du selbst gesagt hast, den Mime-Type mitsendet. ABER wenn man vorher die Dateien per FTP in den File-Ordner hochlädt und dann die Synchronisieren-Funktion verwendet vom Medienpool, dann wird (ich habe nochmal nachgesehen im Quellcode) die PHP-Funktion mime_content_type verwendet.
Von der Synchronisierung war bisher nicht die Rede gewesen. An die Möglichkeit als Fehlerquelle hatte ich gar nicht gedacht :roll:

Dümm hat geschrieben:Diese Funktion ist schon laut der PHP-Doku nicht sehr zuverlässig. Daher werden, wenn man seine Dateien anfangs synchronisiert je nach der mehr oder weniger vollständigen Mime-Type Tabelle, aus der diese PHP-Funktion ihre Werte holt, auch mal leere Werte in die Datenbank eingetragen.
Damit ist die ganze Funktion mit den Mime-Types eigentlich überflüssig.
<?php print $Footer; ?>

Sven

Ich würde ja die Welt verändern,
doch der Quellcode ist mir zu absurd!


REX 5 :: Tricks und Tipps
REX 5 :: Modulesammlung

Wiki zu Redaxo 3 und 4 (!nur noch im Webarchiv!)

Benutzeravatar
tgoellner
Beiträge: 52
Registriert: 25. Apr 2007, 09:45
Wohnort: Bremen
Kontaktdaten: Website

Lösungsvorschlag für REDAXO 4.2.1

26. Mär 2010, 10:53

Hallo zusammen,

ich habe das gleiche Problem auch gehabt und folgende Funktion an das Ende der Datei
/redaxo/include/functions/function_rex_mediapool.inc.php eingefügt:

Code: Alles auswählen

/**
 * Ausgabe des Dateityps
 * http://www.php.net/manual/de/function.mime-content-type.php#87856
 */
function rex_mime_content_type($filename)
{
  $mime_types = array(
    'txt' => 'text/plain',
    'htm' => 'text/html',
    'html' => 'text/html',
    'php' => 'text/html',
    'css' => 'text/css',
    'js' => 'application/javascript',
    'json' => 'application/json',
    'xml' => 'application/xml',
    'swf' => 'application/x-shockwave-flash',
    'flv' => 'video/x-flv',

    // images
    'png' => 'image/png',
    'jpe' => 'image/jpeg',
    'jpeg' => 'image/jpeg',
    'jpg' => 'image/jpeg',
    'gif' => 'image/gif',
    'bmp' => 'image/bmp',
    'ico' => 'image/vnd.microsoft.icon',
    'tiff' => 'image/tiff',
    'tif' => 'image/tiff',
    'svg' => 'image/svg+xml',
    'svgz' => 'image/svg+xml',

    // archives
    'zip' => 'application/zip',
    'rar' => 'application/x-rar-compressed',
    'exe' => 'application/x-msdownload',
    'msi' => 'application/x-msdownload',
    'cab' => 'application/vnd.ms-cab-compressed',

    // audio/video
    'mp3' => 'audio/mpeg',
    'qt' => 'video/quicktime',
    'mov' => 'video/quicktime',

    // adobe
    'pdf' => 'application/pdf',
    'psd' => 'image/vnd.adobe.photoshop',
    'ai' => 'application/postscript',
    'eps' => 'application/postscript',
    'ps' => 'application/postscript',

    // ms office
    'doc' => 'application/msword',
    'rtf' => 'application/rtf',
    'xls' => 'application/vnd.ms-excel',
    'ppt' => 'application/vnd.ms-powerpoint',

    // open office
    'odt' => 'application/vnd.oasis.opendocument.text',
    'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
  );

  $ext = strtolower(array_pop(explode('.',$filename)));
  if (array_key_exists($ext, $mime_types))
  {
      $mimetype = $mime_types[$ext];
  }
  elseif (function_exists('finfo_open'))
  {
      $finfo = finfo_open(FILEINFO_MIME);
      $mimetype = finfo_file($finfo, $filename);
      finfo_close($finfo);
  }
  elseif(function_exists('mime_content_type'))
    $mimetype = mime_content_type($filename);
  
  if(empty($mimetype))
    $mimetype = 'application/octet-stream';
    
  return $mimetype;
}
dann muss noch der Code in der Funktion rex_mediapool_syncFile ausgetauscht werden:

Alter Code (Zeile 298 - 301):

Code: Alles auswählen

  if(empty($filetype) && function_exists('mime_content_type'))
  {
    $filetype = mime_content_type($abs_file);
  }
Neuer Code:

Code: Alles auswählen

$filetype = rex_mime_content_type($abs_file);
Vielleicht sollte so eine Funktion in REdaxo 4.3 in den Core integriert werden?!

Fragt sich Thomas.

Sabse
Beiträge: 97
Registriert: 1. Apr 2008, 15:51
Wohnort: Wörth am Rhein
Kontaktdaten: Website

26. Aug 2010, 11:41

Ich hole den Thread mal aus der Versenkung, weil ich festgestellt habe, dass der Fehler auch in Version 4.3.1 noch nicht behoben ist.

Bei vielen Dateitypen, z.B. CSS und PDF wird bei der Synchronisierung nichts in die Spalte filetype geschrieben.

Das einzige was hilft, ist die Lösung von Dümm, die von Thomas bringt bei schon vorhandenen Dateien nichts.

Gruß, Sabrina

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

11. Nov 2010, 18:34

Möchte mich da mal ranschmeißen.
Kann man nicht einfach die Dateiendungen vergleichen?
Das dürfte doch einfach reichen.
Wer eine falsche Dateiendung dran setzt ist doch selbst schuld.
Die Mime-Typen unterscheiden sich je Browser, das gibt immer Ärger.

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

11. Nov 2010, 19:16

Skerbis hat geschrieben:Möchte mich da mal ranschmeißen.
Kann man nicht einfach die Dateiendungen vergleichen?
Das dürfte doch einfach reichen.
Wer eine falsche Dateiendung dran setzt ist doch selbst schuld.
Die Mime-Typen unterscheiden sich je Browser, das gibt immer Ärger.
Und auch in den Betriebssystemen. MacOSX sendet einen anderen MIME-TYPE-HEADER, als Windows. Hatte des Öfteren schon das Problem

LG
Hirbod

Thomas.Skerbis
Beiträge: 1371
Registriert: 4. Aug 2006, 14:06
Wohnort: Rheinberg
Kontaktdaten: Website Twitter

11. Nov 2010, 22:16

Hirbod hat geschrieben:]

Und auch in den Betriebssystemen. MacOSX sendet einen anderen MIME-TYPE-HEADER, als Windows. Hatte des Öfteren schon das Problem

LG
Hirbod
Hi! Hast Du es lösen können? Wenn ja wie?

Hirbod
Beiträge: 435
Registriert: 15. Jan 2008, 14:46

16. Nov 2010, 03:44

Ich glaub ich hatte damals einfach irgendwas im Core gepatcht, damit das wieder funktioniert. Hab glaub ich die MIME-Types erweitert

Benutzeravatar
Jan.Kristinus
Admin
Beiträge: 2166
Registriert: 24. Aug 2004, 22:11
Wohnort: Frankfurt
Kontaktdaten: ICQ Website

10. Dez 2010, 22:51

Hallo,

in der neuen 4.3.2 und auch in Version 5.0 werden nur noch die Dateiendungen verglichen. Somit sollte das in den meisten Fällen gut klappen ..

lg
jn
Yakamara Media GmbH & Co. KG | Kaiserstrasse 69 | 60329 Frankfurt
Tel.: 069-900.20.60.30
http://www.yakamara.de/

Zurück zu „Sonstiges“