[PHP] Imageupload per URL

Dieses Thema im Forum "Webentwicklung" wurde erstellt von KlausTrofobie, 7. Februar 2007 .

  1. 7. Februar 2007
    Imageupload per URL

    Hey ich versuch gerade ein Image-Hoster-Script á la imageshack.us zu coden..

    Das Uploaden vom PC aus funktioniert 100%ig nur per URL gibts probleme :angry:

    Hier mal der Quellcode-Auszug:

    PHP:
    if ( $art == 'URL' )
      {
          echo 
    $_POST [ 'URL' ];
          if(
    $data  file_get_contents ( $_POST [ 'URL' ]))
          {
             if(
    get_magic_quotes_runtime ())  $data  stripslashes ( $data );
             
    $fh  fopen ( "bilder/zieldatei.ext" "w" );
             
    fputs ( $fh $data );
             
    fclose ( $fh );
        }
      }

    Folgende Fehler kommen:

    Warning: file_get_contents() [function.file-get-contents]: php_network_getaddresses: getaddrinfo failed: Der angegebene Host ist unbekannt.

    Warning: file_get_contents(http://www.culture.gr/2/21/211/21107a/00/lk07a022.jpg) [function.file-get-contents]: failed to open stream


    Ich hoffe ihr könnt mir helfen...(bewertung ist klar)

    MfG
    KlausTrofobie
     
  2. 7. Februar 2007
    AW: Imageupload per URL

    du solltest vllt. lieber die funktion fsockopen verwenden denke ich mal
    PHP:
    if ( $art == 'URL' )
    {
      echo 
    $_POST [ 'URL' ];
      if(
    $stream  fsockopen  ( $_POST [ 'URL' ],  80 ))
      {
        
    fputs  ( $stream "GET / HTTP/1.0\r\n\r\n" );
        
    $data  '' ;
        while (!
    feof ( $stream )) {
          
    $data  .=  fgets ( $stream , 128 );
        }
        
    fclose ( $stream );

        if(
    get_magic_quotes_runtime ())  $data  stripslashes ( $data );
        
    $fh  fopen ( "bilder/zieldatei.ext" "w" );
        
    fputs ( $fh $data );
        
    fclose ( $fh );
      }
    }
     
  3. 7. Februar 2007
    AW: Imageupload per URL

    danke Schmitz

    jetzt kommt der fehler:

    Warning: fsockopen() [function.fsockopen]: unable to connect to http://unadorned.org/pebble/huh.jpg:80 (Unable to find the socket transport "http" - did you forget to enable it when you configured PHP?)

    ich weiß nicht wo ich das aktivieren kann

    vll kannste mir ja helfen (hab xampp bei mir laufen)

    MfG
    KlausTrofobie
     
  4. 7. Februar 2007
    AW: Imageupload per URL

    file_get_contents() gibt dir Fehler, weil die PHP-interne Hostauflösung den gegebenen Host ( ) nicht auf eine IP-Adresse auflösen kann.

    Eine weitere Fehlerquelle kann die Einstellung "allow_url_fopen" sein.
     
  5. 8. Februar 2007
    AW: Imageupload per URL

    die einstellung allow_url_fopen ist auf on (also richtig)

    Der sagt mir ja irgendwas mit fsockopen(), aber dafür find ich keine einstellung...

    Hat vll jemand ne andere Möglichkeit so ein Upload-Script zu realisieren?

    MfG
    KlausTrofobie
     
  6. 8. Februar 2007
    AW: Imageupload per URL

    so sieht mein images upload script aus, ganz einfach aber funktioniert ( bei mir jedenfalls =) )

    PHP:
    <? php
    // Einstellungen
    $url  "http://www.img-host.de" ; //Domain
    $maxsize  "1048576" // Maximale Uploadgrösse (1 MB) 
    $uploddir  "upp/" // Upload Ordner
    $extensions  = array( ".jpg" ".gif" "bmp" "jpeg" );  // Erlaubte Erweiterungen

    if( $_POST [ 'action' ]== "upload" )
    {
    $tmp_name  $HTTP_POST_FILES [ 'bild' ][ 'tmp_name' ];  // Der Originalname 
    $name  $HTTP_POST_FILES [ 'bild' ][ 'name' ];  // Der Originalname 
    $size  $HTTP_POST_FILES [ 'bild' ][ 'size' ];  // Größe der Datei 
    $type  $HTTP_POST_FILES [ 'bild' ][ 'type' ];  // Der MIME Type der Datei 

    $ext_tmp  explode ( "." $name );
    $ext  "." . $ext_tmp [( count ( $ext_tmp )- 1 )];

    if(
    in_array ( $ext $extensions ))

    if(
    $size <= $maxsize  &&  $size != 0 )
    {
    while(
    file_exists ( $uploddir . $newname ) || ! $newname )
    {
    $newname  md5 ( uniqid ( rand ()));
    }

    if(
    move_uploaded_file ( $tmp_name $uploddir . $newname . $ext ))
    {
    $img_eintrag  "INSERT INTO img (size, name, type, url) VALUES (" . $size . ", " . $newname . $ext . ", " . $type . ", " .. ")" ;
    echo 
    "Die Datei erfolgreich hochgeladen.<br>"
    echo 
    "Größe: " . $size . " Byte<br>"
    echo 
    "Name: " . $name . "<br>" ;
    echo 
    "MIME-Type: " . $type . "<br>" ;
    echo 
    "Ansehen: <a href='" . $uploddir . $newname . $ext . "'>" . $url . $uploddir . $newname . $ext . "</a>"
    }
    else{echo 
    "Fehler: Deitei konnte nicht verschoben werden!" ;}
    }
    else

    echo 
    "Ihre Datei ( $size ) ist über  $maxsize  Bytes oder gleich 0 KB"

    }
    else

    echo 
    "Falsche Erweiterung: " . $name

    }
    else

    echo 
    "<form action='" . $_SERVER [ 'PHP_SELF' ]. "' enctype=\"multipart/form-data\" method='post'>" ;
    echo 
    "<input type=\"hidden\" name=\"MAX_FILE_SIZE\" value=\"" . $maxsize . "\">" ;
    echo 
    "<input type='hidden' name='action' value='upload'>"
    echo 
    "<table>"
    echo 
    "<tr>"
    echo 
    "<td>Datei</td><td><input type='file' name='bild'></td>"
    echo 
    "</tr><tr>"
    echo 
    "<td> </td><td><input type='submit' value='Hochladen'></td>"
    echo 
    "</tr>"
    echo 
    "</form>" ;
    echo 
    "</table>"


    ?>
     
  7. 8. Februar 2007
    AW: Imageupload per URL

    Ja soweit war ich auch schon Mutator....

    nur das Problem ist dass man dann das Bild auf seinem PC haben muss. Wenn ich aber von ner URL das hochladen will, dann geht das nicht...

    wer nicht verstanden hat kann mal bei ImageShack - Best place for all of your image hosting and image sharing needs gucken. Da kann man ja auch wählen ob file oder url möchte.

    Genau das will ich auch. Bewertung haste trotzdem schon

    MfG
    KlausTrofobie
     
  8. 8. Februar 2007
    AW: Imageupload per URL

    Falls du die Erweiterung cURL hast, kannst du auch die benutzen. cURL ist extra für solche Sachen gemacht.
    PHP:
    <? php

    $ch 
    curl_init ( "http://www.example.com/image.jpg" );
    $fp  fopen ( "image.jpeg" "w" );

    // Optionen setzen
    curl_setopt ( $ch CURLOPT_FILE $fp );
    curl_setopt ( $ch CURLOPT_HEADER 0 );

    // Ausführen der Aktion
    curl_exec ( $ch );

    // Session beenden
    curl_close ( $ch );
    fclose ( $fp );

    ?>
    Beispiel von php.net.
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.