Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] ftp_put() will nicht

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] ftp_put() will nicht

    Sehr geehrte Damen und Herren,

    ich stehe momentan am Punkt wo ich ohne externe Hilfe nicht weiter komme.
    Mein Problem ist das ich einen Server hab (Debian, Google Compute) und von dort aus ein Projekt am entwickeln bin. Dabei müssen hochgeladene Bilder in js/mini-upload-form/uploads hochgeladen werden (funktioniert) dann von da aus mit dem script verkleinert und in js/mini-upload-form/tmp (funktioniert auch) gespeichert werden.

    PHP-Code:
    function resizeImage ($filepath_old$filepath_new$dirpath_new$image_dimension$scale_mode 0) {
      if (!(
    file_exists($filepath_old)) || file_exists($filepath_new)) return false;

      
    $image_attributes getimagesize($filepath_old);
      
    $image_width_old $image_attributes[0];
      
    $image_height_old $image_attributes[1];
      
    $image_filetype $image_attributes[2];
      if (
    $image_width_old <= || $image_height_old <= 0) return false;
      
    $image_aspectratio $image_width_old $image_height_old;

      if (
    $scale_mode == 0) {
       
    $scale_mode = ($image_aspectratio ? -: -2);
      } elseif (
    $scale_mode == 1) {
       
    $scale_mode = ($image_aspectratio ? -: -1);
      }

      if (
    $scale_mode == -1) {
       
    $image_width_new $image_dimension;
       
    $image_height_new round($image_dimension $image_aspectratio);
      } elseif (
    $scale_mode == -2) {
       
    $image_height_new $image_dimension;
       
    $image_width_new round($image_dimension $image_aspectratio);
      } else {
       return 
    false;
      }
    mkdir($dirpath_new0755true);

      switch (
    $image_filetype) {
       case 
    1:
        
    $image_old imagecreatefromgif($filepath_old);
        
    $image_new imagecreate($image_width_new$image_height_new);
        
    imagecopyresampled($image_new$image_old0000$image_width_new$image_height_new$image_width_old$image_height_old);
        
    imagegif($image_new$filepath_new);
        break;
     
       case 
    2:
        
    $image_old imagecreatefromjpeg($filepath_old);
        
    $image_new imagecreatetruecolor($image_width_new$image_height_new);
        
    imagecopyresampled($image_new$image_old0000$image_width_new$image_height_new$image_width_old$image_height_old);
        
    imagejpeg($image_new$filepath_new);
        break;

       case 
    3:
        
    $image_old imagecreatefrompng($filepath_old);
        
    $image_colordepth imagecolorstotal($image_old);

        if (
    $image_colordepth == || $image_colordepth 255) {
         
    $image_new imagecreatetruecolor($image_width_new$image_height_new);
        } else {
         
    $image_new imagecreate($image_width_new$image_height_new);
        }

        
    imagealphablending($image_newfalse);
        
    imagecopyresampled($image_new$image_old0000$image_width_new$image_height_new$image_width_old$image_height_old);
        
    imagesavealpha($image_newtrue);
        
    imagepng($image_new$filepath_new);
        break;

       default:
        return 
    false;
      }

      
    imagedestroy($image_old);
      
    imagedestroy($image_new);
      return 
    true;
     } 
    - Skript zum Verkleinern.

    Dann soll von dem Verzeichniss tmp via FTP an meinen anderen Server hochgeladen werden.
    Es erstellt zwar per ftp_mkdir() die Ordner, jedoch lädt er nichts hoch.
    Als Debug hab ich noch die Bilder ausgeben lassen um zu sehen ob es evtl. beschädigte Daten sind. Aber auch das war es nicht.

    Hier mein Problems-Skript:
    PHP-Code:
    $ftp_server "****";
    $conn_id ftp_connect($ftp_server);
    $login_result ftp_login($conn_id"****""****") or die("Passwort oder Benutzername falsch");
     
     function 
    umlaute_ersetzen($rpText){
        
    $such_array  = array ('ä''ö''ü''ß''Ä''Ö''Ü'' ');
        
    $ersetzen_array = array ('ae''oe''ue''ss''Ae''Oe''Ue''-');
        
    $neuer_text  str_replace($such_array$ersetzen_array$rpText);
        
        return 
    strtolower($neuer_text); 
    }

    $titelforsave umlaute_ersetzen($titel);
    $markeforsave umlaute_ersetzen($marke);

        
    ftp_mkdir($conn_id'/www/upload/'.$markeforsave.'/');
        
    ftp_mkdir($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/');
        
    ftp_mkdir($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/big/');

    $i 2;
    for(
    $d 1$d <= $files_count$d++){
        
    $a $i 1;
        
    $myfile $files[$i];

        
    resizeImage('js/mini-upload-form/uploads/'.$files[$i], 'js/mini-upload-form/tmp/'.$files[$i], 'js/mini-upload-form/tmp/'600, -1);
        
        
    ftp_put($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/bild'.$a.'.jpg''js/mini-upload-form/tmp/'.$myfileFTP_BINARY);
        
    ftp_put($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/big/bild'.$a.'.JPG''js/mini-upload-form/uploads/'.$myfileFTP_BINARY);
        
        echo 
    '<img src="js/mini-upload-form/tmp/'.$myfile.'">';
        
        
    //unlink('js/mini-upload-form/uploads/'.$files[$i]);
        //unlink('js/mini-upload-form/tmp/'.$files[$i]);
        
    $i++;

    Ich bedanke mich schon im Vorraus

  • #2
    Für die Leute, die das noch wissen wollen.
    Ich habe die Lösung gefunden, aber musste sehr lange in sehr vielen Foren suchen und mir einen Zusammenhang erstellen.

    Ich habe die Funktion ftp_pasv() benutzt um die Daten passiv hochzuladen.
    Hat zwar als erstes nicht geklappt, aber das lag daran dass ich folgenes falsch gemacht habe.
    PHP-Code:
    ftp_put($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/bild'.$a.'.jpg''js/mini-upload-form/tmp/'.$myfileFTP_BINARY);
        
    ftp_put($conn_id'/www/upload/'.$markeforsave.'/'.$AID.'-'.$titelforsave.'/big/bild'.$a.'.JPG''js/mini-upload-form/uploads/'.$myfileFTP_BINARY); 
    Man sieht dort: 'js/mini-upload-form/tmp/' bzw. 'js/mini-upload-form/uploads/'. Ich musste nur den vollen Pfad angeben also in '/var/www/test/js/mini-upload-form/tmp' und das andere ebenfalls.

    - mReTurkey

    Kommentar

    Lädt...
    X