Leser in diesem Thema: 1 Anonyme(r)
(1) 2 »
Goffy Goffy
  • Co-Administrator
  • Co-Administrator
  • Registriert seit: 14.10.2004
  • Aus: Hochburg-Ach
  • Gruppe: Moderator Administrator Mitglieder
  • Beiträge: 576
  • Offline
  • Geschrieben von: 31.07.2014
Aw: Fotoupload #12
Hi mamba

checkMaxFileSize funktioniert nur, wenn der Upload in das temporäre Verzeichnis erfolgt ist und das Array $_FILES['userfile']['size'] einen Wert hat.

Die Fehlerbehandlung aus dem php-fileupload fehlt.

Ich habe mal meinen Vorschlag auf xoops.org gepostet:
http://xoops.org/modules/newbb/viewtopic.php?post_id=358306
EDV = Epoche der Verzweiflung
mambax7 mambax7
  • Moderator
  • Moderator
  • Registriert seit: 29.04.2008
  • Gruppe: Moderator Mitglieder
  • Beiträge: 458
  • Offline
  • Geschrieben von: 26.07.2014
Aw: Fotoupload #11
Zitat:
Ich schau mal, ob ich die Fehlerbehandlung in die uploader.php einbauen kann und poste dann den Code.


Das haben wir bereits:

function checkMaxFileSize()
{
  if (!isset(
$this->maxFileSize)) {
      return 
true;
  }
  if (
$this->mediaSize $this->maxFileSize) {
      
$this->setErrors(sprintf(_ER_UP_FILESIZETOOLARGE$this->maxFileSize$this->mediaSize));

      return 
false;
  }
  return 
true;
}


Oder brauchst Du was anderes?
Werbung  

Hier könnte auch Ihre Werbung stehen!
Kontaktieren Sie uns dazu und wir unterbreiten Ihnen ein Angebot.
alfred alfred
  • Administrator
  • Administrator
  • Registriert seit: 06.12.2004
  • Gruppe: Mitglieder Webmaster Administrator Moderator
  • Beiträge: 7664
  • Offline
  • Geschrieben von: 26.07.2014
Aw: Fotoupload #10
Wenn du nur die reinen Fehlermeldungen brauchst:
http://php.net/manual/de/features.file-upload.errors.php

Ansonsten kann man da noch ein paar Funktionen einbauen um das entsprechend steuern zu können.
Goffy Goffy
  • Co-Administrator
  • Co-Administrator
  • Registriert seit: 14.10.2004
  • Aus: Hochburg-Ach
  • Gruppe: Moderator Administrator Mitglieder
  • Beiträge: 576
  • Offline
  • Geschrieben von: 26.07.2014
Aw: Fotoupload #9
Mann, bin ich bescheuert, wer lesen kann ist klar im Vorteil.

Das $_FILES-Array liefert eh alles, was ich brauche
Zitat:
array(5) { ["name"]=> string(20) "guek2010_3_quali.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }


["error"]=> int(1) bedeutet: UPLOAD_ERR_INI_SIZE (Die hochgeladene Datei überschreitet die in der Anweisung upload_max_filesize in php.ini festgelegte Größe)

Ich schau mal, ob ich die Fehlerbehandlung in die uploader.php einbauen kann und poste dann den Code.
EDV = Epoche der Verzweiflung
mambax7 mambax7
  • Moderator
  • Moderator
  • Registriert seit: 29.04.2008
  • Gruppe: Moderator Mitglieder
  • Beiträge: 458
  • Offline
  • Geschrieben von: 26.07.2014
Aw: Fotoupload #8
Hast Du bereits XOOPS 2.5.7 installiert?

In XOOPS 2.5.7, wir haben in XoopsMediaUploader __construct folgendes gemacht:

$maxUploadInBytes   $this->return_bytes(ini_get('upload_max_filesize'));
$maxPostInBytes     $this->return_bytes(ini_get('post_max_size'));
$memoryLimitInBytes $this->return_bytes(ini_get('memory_limit'));
if (
intval($maxFileSize) > 0) {
   
$maxFileSizeInBytes $this->return_bytes($maxFileSize);
   
$newMaxFileSize     min($maxFileSizeInBytes$maxUploadInBytes$maxPostInBytes$memoryLimitInBytes);
   } else {
       
$newMaxFileSize min($maxUploadInBytes$maxPostInBytes$memoryLimitInBytes);
}
$this->maxFileSize $newMaxFileSize;


Goffy Goffy
  • Co-Administrator
  • Co-Administrator
  • Registriert seit: 14.10.2004
  • Aus: Hochburg-Ach
  • Gruppe: Moderator Administrator Mitglieder
  • Beiträge: 576
  • Offline
  • Geschrieben von: 25.07.2014
Aw: Fotoupload #7
Danke alfred

das Problem ist aber:
Mein Limit: 1 MB
PHP-Limit: 4 MB

Für den Upload verwende ich das Standardobjekt XoopsFormFile

Wenn ich jetzt eine Datei mit 2 MB hochladen will, schaut $_FILES so aus
Zitat:
array(5) { ["name"]=> string(20) "img53958a47b5927.jpg" ["type"]=> string(10) "image/jpeg" ["tmp_name"]=> string(34) "C:\Homepages\Xampp\tmp\phpB1B8.tmp" ["error"]=> int(0) ["size"]=> int(122913) }

Ich hab somit die Dateigröße und es wird auch eine entsprechende Fehlermeldung ("Datei ist zu groß") angezeigt.

Wenn ich jetzt eine Datei mit 5 MB hochladen will, schaut $_FILES so aus
Zitat:
array(5) { ["name"]=> string(20) "guek2010_3_quali.jpg" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(1) ["size"]=> int(0) }

Ich hab gar keine Dateigröße mehr und kann somit mit nichts mehr vergleichen.

Um die php-Funktion filesize zu verwenden, brauche ich aber den vollständigen Pfad, aber XoopsFormFile liefert nur den Dateinamen

Ich werd mich mal mit dem XoopsFormFile befassen, vielleicht kann man da was machen.
EDV = Epoche der Verzweiflung
alfred alfred
  • Administrator
  • Administrator
  • Registriert seit: 06.12.2004
  • Gruppe: Mitglieder Webmaster Administrator Moderator
  • Beiträge: 7664
  • Offline
  • Geschrieben von: 24.07.2014
Aw: Fotoupload #6
/class/uploader.php
ca Zeile 148
nach

function XoopsMediaUploader($uploadDir$allowedMimeTypes$maxFileSize 0$maxWidth null$maxHeight null)
    {
        
$this->extensionToMime = include $GLOBALS['xoops']->path('include/mimetypes.inc.php');
        if (!
is_array($this->extensionToMime)) {
            
$this->extensionToMime = array();
            return 
false;
        }
        if (
is_array($allowedMimeTypes)) {
            
$this->allowedMimeTypes =& $allowedMimeTypes;
        }
        
$this->uploadDir $uploadDir;
        
$this->maxFileSize intval($maxFileSize);


folgendes hinzufügen:

$php_maxsize = @ini_get('upload_max_filesize');
if ( @
ini_get('post_max_size') < $php_maxsize $php_maxsize = @ini_get('post_max_size');
  if ( 
$php_maxsize ) {   
    if ( 
$this->maxFileSize $php_maxsize $this->maxFileSize $php_maxsize;
        }

Goffy Goffy
  • Co-Administrator
  • Co-Administrator
  • Registriert seit: 14.10.2004
  • Aus: Hochburg-Ach
  • Gruppe: Moderator Administrator Mitglieder
  • Beiträge: 576
  • Offline
  • Geschrieben von: 24.07.2014
Aw: Fotoupload #5
Problem gefunden:

Nachdem ich mir in class/uploader.php das Array $_FILES ausgeben lassen habe, habe ich den Fehler gefunden. Die Datei war nicht nur größer als mein Limit, sondern auch noch größer als das Uploadlimit, das in der php.ini eingestellt war.

Frage an unsere Entwickler:
Wäre es möglich, die class/uploader.php so anzupassen, dass diese erkennt und meldet, wenn eine Datei größer als das php-Limit ist?

EDV = Epoche der Verzweiflung
Goffy Goffy
  • Co-Administrator
  • Co-Administrator
  • Registriert seit: 14.10.2004
  • Aus: Hochburg-Ach
  • Gruppe: Moderator Administrator Mitglieder
  • Beiträge: 576
  • Offline
  • Geschrieben von: 24.07.2014
Aw: Fotoupload #4
Danke ihr zwei


@ alfred: zwei mal fetchMedia ist natürlich Quatsch

Hab zumindest mal einen Teilerfolg zu melden. Die Fehlerausgabe ist nicht gestartet, weil beim ersten fetchMedia bereits der Fehler auftrat.
Der neue Code ist jetzt:
if ($uploader_siegerfoto_foto->fetchMedia("siegerfoto_foto_upload")) {
      
$uploader_siegerfoto_foto->setPrefix("siegerfoto_foto_") ;
      if (!
$uploader_siegerfoto_foto->upload()) {
        
$errors $uploader_siegerfoto_foto->getErrors();
        
redirect_header("siegerfoto.php",$errors);
      } else {
        
$siegerfoto_foto $uploader_siegerfoto_foto->getSavedFileName();
        echo 
"<br/>Upload erfolgreich";
      }
    } else {
      
$errors $uploader_siegerfoto_foto->getErrors();
      
redirect_header("siegerfoto.php",$errors);
      
$siegerfoto_foto $_REQUEST["siegerfoto_foto_select"];
    }


Allerdings bekomm ich jetzt folgende Fehlermeldung:
Zitat:
Fehler beim hochladen : guek2010_1_quali.JPG
Keine Datei zum Hochladen


Eigentlich sollte da doch dann kommen "Datei zu groß" oder so

Jemand eine Idee?
EDV = Epoche der Verzweiflung
alfred alfred
  • Administrator
  • Administrator
  • Registriert seit: 06.12.2004
  • Gruppe: Mitglieder Webmaster Administrator Moderator
  • Beiträge: 7664
  • Offline
  • Geschrieben von: 23.07.2014
Aw: Fotoupload #3
if ($uploader_siegerfoto_foto->fetchMedia("siegerfoto_foto_upload")) { 
      
$uploader_siegerfoto_foto->setPrefix("siegerfoto_foto_") ; 
      
$uploader_siegerfoto_foto->fetchMedia("siegerfoto_foto_upload"); 
      if (!
$uploader_siegerfoto_foto->upload()) {


2 x Upload? Was soll das bringen außer Fehler?
Design by: XOOPS UI/UX Team