Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 21
  1. #1
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147

    Importare file su un server esterno

    Buongiorno a tutti!

    Ho questo problema...Dovrei creare una funzione che vada a prendere automaticamente tutti i file .xml da una determinata directory e li vada ad importare all'interno di una directory posta su un altro server.

    Come potrei fare?
    Basta avere l'indirizzo assoluto della directory su cui devo fare l'upload dei file?

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se hai accesso FTP al server su cui devi andare a caricare i file, la cosa è abbastanza semplice: puoi sfruttare le funzioni ftp messe a disposizione da php sul server con i file xml. Avresti una cosa del genere

    codice:
    <?php
    // stabilire una connessione
    $ftp_server = "ftp.sito_destinazione.com;
    $ftp_user_name = "username";
    $ftp_user_pass = "password;
    $destination_file = "/percorso/cartella_remota/file.xml";
    $source_file = "/percorso/cartella_locale/file.xml";
    $conn_id = ftp_connect($ftp_server); 
    
    // login con user name e password
    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 
    
    // controllo della connessione
    if ((!$conn_id) || (!$login_result)) { 
            echo "La connessione FTP è fallita!";
            echo "Tentativo di connessione a $ftp_server per l'utente $ftp_user_name"; 
            die; 
        } else {
            echo "Connesso a $ftp_server, utente $ftp_user_name";
        }
    
    // upload del file
    $upload = ftp_put($conn_id, $destination_file, $source_file, FTP_BINARY); 
    
    // controllo dello stato di upload
    if (!$upload) { 
            echo "Il caricamento FTP non è andato a buon fine!";
        } else {
            echo "Caricato il file $source_file su $ftp_server come $destination_file";
        }
    
    // chiudere il flusso FTP 
    ftp_quit($conn_id); 
    ?>
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    Ok! Una cosa del genere penso che andrà benissimo! Ora eseguo i test e le prove di routine.
    Si possono però andare a prendere tutti i file .xml presenti nella directory che vado ad indicare in $source_file?

    Ah...Una cosa importante...i file .xml si troverranno su un client e non in locale!

  4. #4
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Se i file si trovano sul client l'unico modo di inviarli è creare una pagina con un form di upload in cui il client andrà a specificare che file inviare, e quindi inviarli. A questo punto ti conviene fare direttamente la pagina di upload per il server di destinazione e saltare la parte dell'invio da server a server via ftp... a meno che i file .xml non servano su entrambi i server... nel qual caso farai la pagina di upload su uno dei due server e sullo stesso anche la pagina di invio via ftp.

    Chiaramente puoi inviare tutti i file che vuoi, ti basta andare ad aprire la cartella contenente i file xml con opendir, leggere tutto il contenuto (fai i controlli del caso, tipo se i file sono effettivamente .xml) e ripetere l'invio ftp per ciascuno dei file.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  5. #5
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    I file .xml serviranno solamente al server a cui mi dovrei collegare via ftp. Quindi la parte del passaggio si può tralasciare.

    Per la funzione "opendir" ho trovato questo codice su php.net

    Codice PHP:
    <?php
    $dir 
    "/percorso/cartella_locale/";
    // Apre una directory conosciuta, e procede con la lettura del contenuto
    if (is_dir($dir)) {
       if (
    $dh opendir($dir)) {
          while ((
    $file readdir($dh)) !== false) {
                 echo 
    "filename: $file : filetype: " filetype($dir $file) . "\n";
            }
            
    closedir($dh);
        }
    }

    ?>
    però, a quanto ho capito, va solo a leggere il contenuto della directory che indico in $dir e non fa altro. Come potrei incrementarla con una funzione di upload? Oppure, per caricare i dati su un altro server, devo usare tutt'altro tipo di funzione?

  6. #6
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Forse non mi sono spiegato bene: se il file si trova sul client (per intenderci, sul mio computer), con PHP e opendir ti ci fai il bidet. Quindi chiarisci: si tratta di upload (allora fai una ricerca con upload file) oppure altro?
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  7. #7
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    I files si trovano sul tuo pc. E devo caricarli su un server esterno.

    Sarebbe meglio fare l'upload direttamente sul server esterno. Ma se non è possibile va bene anche fare prima l'upload sul mio server e poi passarli al server esterno. Ma in questo caso, una volta ultimata l'operazione, devo cancellare i files sul mio server. Tieni presente che non sarà mai un file solo...Saranno sempre più files.

  8. #8
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Puoi caricare anche mille file alla volta basta che lo script non vada in timeout. Se hai accesso al server di destinazione (immagino di sì, altrimenti mi fermo qui perché cercare di caricare roba su un server non tuo su cui non hai alcuna autorizzazione ad operare è pirateria informatica), fai un form di upload

    codice:
    <form name="upload" enctype="multipart/form-data" method="post" action="doupload.php">
      <input type="file" name="uploadfile[]" />
    
      <input type="file" name="uploadfile[]" />
    
      <input type="file" name="uploadfile[]" />
    
      <input type="file" name="uploadfile[]" />
    
      <input type="submit" value="submit" />
    </form>
    e in doupload.php avrai che $_FILES conterrà un array con i file effettivamente uploadati (su cui farai i controlli del caso). E' già stato fatto a detto in migliaia di thread.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    VVoVe: VVoVe: ma tu sei quello di

    http://forum.html.it/forum/showthrea...readid=1141538

    e non è già tutto fatto!?!?!?! Copia da lì!
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it L'avatar di Fra2006
    Registrato dal
    Nov 2006
    Messaggi
    147
    Si, sono io!

    Tranquillo che il permesso per entrare sul server esterno ce l'ho!

    Il mio problema è che volevo evitare di andare a selezionare tutti i file in un form per poi inviarli sul server esterno (perchè sto parlando di una trentina di file e a volte anche di più). Non c'è una procedura che vada a prendere automaticamente tutti i file .xml presenti in una directory?

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.