MyXoops Forum

Aw: Fotoupload [Entwicklung allgemein] - myXOOPS German Support

Goffy

Co-Administrator
Gepostet am:31.07.2014 11:44
Goffy
Goffy Offline (Show more)
Co-Administrator
Posts: 774
Since: 14.10.2004
#12

Aw: Fotoupload

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

Moderator
Gepostet am:26.07.2014 11:55
mambax7
mambax7 Offline (Show more)
Moderator
Posts: 340
Since: 29.04.2008
#11

Aw: Fotoupload

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?

Advertisement

Gepostet am:0
Advertisement (Show more)
Posts: 0
Since: 0


Hier könnten Sie Ihre Anzeige aufgeben!
Bitte kontaktieren Sie uns, um mehr darüber zu erfahren.

alfred

Administrator
Gepostet am:26.07.2014 10:48
alfred
alfred Offline (Show more)
Administrator
Posts: 7618
Since: 06.12.2004
#10

Aw: Fotoupload

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

Co-Administrator
Gepostet am:26.07.2014 10:05
Goffy
Goffy Offline (Show more)
Co-Administrator
Posts: 774
Since: 14.10.2004
#9

Aw: Fotoupload

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

Moderator
Gepostet am:26.07.2014 08:30
mambax7
mambax7 Offline (Show more)
Moderator
Posts: 340
Since: 29.04.2008
#8

Aw: Fotoupload

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

Co-Administrator
Gepostet am:25.07.2014 08:17
Goffy
Goffy Offline (Show more)
Co-Administrator
Posts: 774
Since: 14.10.2004
#7

Aw: Fotoupload

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

Administrator
Gepostet am:24.07.2014 18:49
alfred
alfred Offline (Show more)
Administrator
Posts: 7618
Since: 06.12.2004
#6

Aw: Fotoupload

/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

Co-Administrator
Gepostet am:24.07.2014 14:20
Goffy
Goffy Offline (Show more)
Co-Administrator
Posts: 774
Since: 14.10.2004
#5

Aw: Fotoupload

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

Co-Administrator
Gepostet am:24.07.2014 12:34
Goffy
Goffy Offline (Show more)
Co-Administrator
Posts: 774
Since: 14.10.2004
#4

Aw: Fotoupload

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

Administrator
Gepostet am:23.07.2014 18:22
alfred
alfred Offline (Show more)
Administrator
Posts: 7618
Since: 06.12.2004
#3

Aw: Fotoupload

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?
Diesen Thread durchsuchen:  1 Anonyme Benutzer

Aktuell aus dem Forum

Forum Thema Antworten Views Letzter Beitrag
OffOffTopic [Wichtig] Übernahme myXOOPS 0 494 11.12.2023 18:57
alfred Gehe zum letzten Beitrag
Die Installation und Administration von XOOPS 2.5.X [Offen] Upgrade 2.5.11 3 2207 07.05.2023 07:03
Goffy Gehe zum letzten Beitrag