Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    upload php-ftp: problema

    Buongiorno a tutti, da un po' ho un problema che non riesco a risolvere.
    Dopo svariati test e tentativi e ricerche su internet, mi rivolgo a voi nella speranza di trovare una

    soluzione.
    Devo realizzare una procedura di upload file in php, utilizzando istruzioni che permettano il

    caricamento ftp. L'utente non deve far altro che "sfogliare", selezionare un file e premere il

    pulsantino "upload".
    Per completezza riporto in seguito il codice della pagina 1 (forma di selezione file) e della funzione

    di upload.
    In coda al messaggio riporto i dettagli sull'errore restituito.


    //PAGINA 1: FORM DI UPLOAD
    <html>
    <body marginwidth=4 marginheight=4 topmargin=4 leftmargin=4 bgcolor=white vlink="#0000ff"

    link="#0000ff">
    <form action="include/_ftp.php" method=POST enctype="multipart/form-data" name="Attachments">
    <input type=hidden name=box value="">
    <tr>
    <td nowrap width="1%">Image:</td>
    <td colspan=2>
    <input type=file name=source_file size=20>
    <input type="hidden" name="MAX_FILE_SIZE" value="83886080">



    </td>
    </tr>
    <input type=submit name=btnSubmit value=Submit size=20 style="border: 1px solid #0000FF"></form>
    </body>
    </html>



    //PAGINA 2: CODICE PER IL TRASFERIMENTO FTP
    <?php
    $ftp_server="xxx";
    $ftp_user_name="xxx";
    $ftp_user_pass="xxx";
    // set up basic connection
    $conn_id = ftp_connect($ftp_server);

    // login with username and password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);

    // check connection
    if ((!$conn_id) || (!$login_result)) {
    echo "FTP connection has failed!";
    echo "Attempted to connect to $ftp_server for user $ftp_user_name
    ";
    exit;
    } else {
    echo "Connected to $ftp_server, for user $ftp_user_name
    ";
    }

    // turn passive mode on
    ftp_pasv($conn_id, true);

    //directorylike /www.velibaba.com/images
    echo "
    chdir public: ".ftp_chdir($conn_id, "public");
    echo "
    timeout: ".ftp_get_option($conn_id, FTP_TIMEOUT_SEC);
    echo "
    autoseek: ".ftp_get_option($conn_id, FTP_AUTOSEEK);


    $destination_file="_x.tmp";
    echo ("
    ");
    echo ("
    $destination_file ==> $source_file ( $_POST[source_file] )
    ");
    echo ("
    ");

    // upload the file
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);

    // check upload status
    if (!$upload) {
    echo "FTP upload has failed!";
    } else {
    echo "Uploaded $source_file to $ftp_server as $destination_file";
    }

    // close the FTP stream
    ftp_quit($conn_id);
    ?>


    Ho testato lo stesso codice su 3 diversi siti, situati su tre diversi server di cui uno linux e gli

    altri windows.
    Risultato: su due host (uno linux e uno windows 2000) non ci sono problemi e l'output a video è il

    seguente:

    Connected to xxx, for user xxx
    chdir public: 1
    timeout: 90
    autoseek: 1
    Uploaded C:\WINNT\TEMP\php1759.tmp to hosthosthost as _x.tmp


    Sul terzo, alcuni file vengono caricati, ma la maggior parte no. Apparentemente non ci sono criteri...

    i file caricati sono di svariate dimensioni e contenuto, come quelli non caricati. Insomma, non sembra

    un problema di dimensioni del file o altro.
    Il risultato, a video, è il seguente:

    Connected to xxx, for user xxx
    chdir public: 1
    timeout: 90
    autoseek: 1
    FTP upload has failed!

    Quindi l'istruzione:
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY);
    restituisce semplicemente un bello zero.........

    Ho provato a cambiare un po' il codice, ftp passivo, autoseek, FTP_ASCII al
    posto di binary ecc... ma... nessun cambiamento.
    Brancolo nel buio.
    Qualcuno sa darmi una mano?
    Spero di aver documentato tutto con completezza e non aver dimenticato nulla.
    Grazie anticipate.

  2. #2
    non devi utilizzare le funzioni ftp perchè normalmente si usano per trasferire file da server a server

    devi utilizzare le funzioni di upload, trovi un articolo di gm su freephp.html.it

  3. #3
    Grazie del suggerimento.
    Nonostante questo continuo a voler utilizzare le funzioni ftp, visto che funzionano (almeno altrove e almeno a tutti quelli che ho sentito che le hanno utilizzate).
    Quindi il problema resta.

  4. #4
    Se devi trasferire file da server a server puoi usare le funzioni ftp, altrimenti no

    Tutti gli utenti dovrebbero avere php sul loro pc e i tuoi file per funzionare

  5. #5
    Forse mi sono spiegato male io...
    Ho testato.
    Un'amica senza php installato sul proprio pc, accedendo alla pagina già online, su uno degli host dove lo script funziona, ha provato a caricare un file dal suo pc usando tale procedura documentata nel mio messaggio.
    Funziona.
    Lei non ha php installato in locale e ha scelto un file qualsiasi.
    Ho capito male quello che mi suggerisci?
    Grazie cmq per le risposte rapide!

  6. #6
    funziona certo ma è inutile

    In pratica fai questo:
    1) L'utente seleziona il file. E preme Submit
    2) Il file con le funzioni di upload viene trasferito nella cartella temporanea del tuo server.
    3) Con le funzioni ftp di php lo prendi dal tuo server e lo rimetti sullo stesso server.

    Il punto 3 dovrebbe essere solo la funzione
    move_uploaded_file
    http://it2.php.net/manual/it/functio...oaded-file.php

    In questo modo è + veloce, + sicuro e gira anche sui server dove ftp è disabilitato
    Eviti connessioni ftp inutili, poi fai come vuoi

  7. #7
    Ora ho capito!
    Grazie mille, sei stato di grande aiuto!

  8. #8
    Originariamente inviato da emanjonez
    Ora ho capito!
    Grazie mille, sei stato di grande aiuto!
    de nada

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.