Visualizzazione dei risultati da 1 a 9 su 9

Discussione: subimit form esterno

  1. #1

    subimit form esterno

    volevo sapere se è possibile in qualche modo inviare un immagine al form di imageshack.us e ottenere come risultato il link del'immagine uploadata (o megli ancora un array con il link dall'immagine e i suoi relativi ridimenzionamenti);

  2. #2
    Utente di HTML.it L'avatar di garakkio
    Registrato dal
    Dec 2011
    residenza
    Roma
    Messaggi
    480
    Puoi inviare dati a un form usando file_get_contents() http://it.php.net/file_get_contents (guarda in particolare tra i commenti, trovi esempi su come inviare un POST).
    Poi il parsing del risultato puoi farlo come meglio credi, con funzioni di manipolazioni delle stringhe.

  3. #3
    Grazie!
    Frugando nel manuale ho trovato quello che cercavo qui:stream_context_create.
    Riporto la funzione chi ne avrà bisogno in futuro:

    Codice PHP:
    function do_post_request($url$postdata$files null)
    {
        
    $data "";
        
    $boundary "---------------------".substr(md5(rand(0,32000)), 010);
          
        
    //Collect Postdata
        
    foreach($postdata as $key => $val)
        {
            
    $data .= "--$boundary\n";
            
    $data .= "Content-Disposition: form-data; name=\"".$key."\"\n\n".$val."\n";
        }
        
        
    $data .= "--$boundary\n";
       
        
    //Collect Filedata
        
    foreach($files as $key => $file)
        {
            
    $fileContents file_get_contents($file['tmp_name']);
           
            
    $data .= "Content-Disposition: form-data; name=\"{$key}\"; filename=\"{$file['name']}\"\n";
            
    $data .= "Content-Type: image/jpeg\n";
            
    $data .= "Content-Transfer-Encoding: binary\n\n";
            
    $data .= $fileContents."\n";
            
    $data .= "--$boundary--\n";
        }
     
        
    $params = array('http' => array(
               
    'method' => 'POST',
               
    'header' => 'Content-Type: multipart/form-data; boundary='.$boundary,
               
    'content' => $data
            
    ));

       
    $ctx stream_context_create($params);
       
    $fp fopen($url'rb'false$ctx);
      
       if (!
    $fp) {
          throw new 
    Exception("Problem with $url$php_errormsg");
       }
     
       
    $response = @stream_get_contents($fp);
       if (
    $response === false) {
          throw new 
    Exception("Problem reading data from $url$php_errormsg");
       }
       return 
    $response;


  4. #4
    ho notato che così passo solo le variabili tramite post ma non i file;
    Pongo un esempio nello specifico:
    Codice PHP:
    <?php
    function do_post_request($url$postdata$files null)
    {
       ...
    }


    if(!empty(
    $_FILES['fileupload']) && $_FILES['fileupload']['size']):
        
    $files['image']=$_FILES['fileupload'];
        
    $postdata = array(
        
    'MAX_FILE_SIZE' => $_POST['MAX_FILE_SIZE']
    );
    echo 
    do_post_request("http://127.0.0.1:8080/Php/PHP/Progetti/imageSuploader/risposta.php"$postdata$files);

    else:
    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Imageshack Uploader</title>
    </head>
    <body>
    <form action="#" method="post" enctype="multipart/form-data">

    <input name="MAX_FILE_SIZE" value="1548576" type="hidden">
    <input class="textfield" name="fileupload" size="30" type="file">
    <input value="carica" type="submit">
    </form>
    </body>
    </html>
    <?php endif;?>
    e la pagina di risposta:
    Codice PHP:
    <?php
    if(!empty($_FILES['fileupload']) && $_FILES['fileupload']['size']):
        
    $files['image']=$_FILES['fileupload'];
        
    $postdata = array(
        
    'MAX_FILE_SIZE' => $_POST['MAX_FILE_SIZE']
    );
    ?>
    bravo pesa <?php echo $files['image']['size'?>
    <?php
    else:
    ?>
    nulla mi dispiace
    <?php
    if(!empty($_POST['MAX_FILE_SIZE']))
    {
        echo 
    ", ma almeno il post non file &egrave; passato: ".$_POST['MAX_FILE_SIZE'];
    }
    endif;
    ?>
    ovviamente l'output è
    codice:
    nulla mi dispiace , ma almeno il post non file è passato: 1548576

  5. #5
    Up

  6. #6
    Si ovvio che puoi mandare dei dati al form di un altro sito. Non sono sicuro tu possa inviare file.

  7. #7
    la funzione l'ho presa dal manuale ma non capisco perchè non funzioni
    PS. anche se non da alcun tipo errore

  8. #8
    up

  9. #9
    up

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.