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

    recuperare l'url del file sul server

    ciao,

    sono bloccato su come recuperare l'url di memorizzazione del file sul server.
    mi spiego meglio:

    tramite form passo la variabile file allo script che mi fa l'uload del file via ftp sul server, salvando però la descrizione su DB.

    in pratica, la query:

    codice:
            $query = mysql_query("INSERT INTO files (id_user,oggetto, date, descrizione, filename, filesize)
                       VALUES ( '".$_POST["codice"]."','".$_POST["oggetto"]."','$date','".$_POST["FCKeditor1"]."', '".$_FILES["upfile"]["name"]."', 
                                    '".$_FILES["upfile"]["size"]."')") or die(mysql_error());
    però ho notato che $_FILES["upfile"]["name"] mi salva solo il nome del file.
    come faccio a recuperare il percorso del file sul server per renderlo in fase di visualizzazione, downloadabile?

    spero di essermi spiegato

    vi ringrazio!

  2. #2
    Non mi sembra che lo fai via ftp...
    Cmq dopo aver caricato il file deve essere spostato in un'altra cartella con la funzione
    move_uploaded_file ( string filename, string destination);

    e il file si sposterà nella cartella di destinazione.

    e da lì sarà semplice ricavare l'url!

  3. #3
    ciao,

    dunque ho questo script:

    codice:
    include("dbconnect.php");
    include("ftp_connect.php");
    
    // upload del file
    $destination_file = '/prove/prova_ftp/'.$_FILES['upfile']['name'];
    $source_file = $_FILES['upfile']['tmp_name'];
    $upload = ftp_put($connect, $destination_file, $source_file, FTP_BINARY); 
    
    // controllo dello stato di upload
    if (!$upload) { 
            echo "Errore nel caricamento del file!";
        } else {
                      
        
                  //Ottieni la data corrente
                      $date = date ("d/m/Y"); 
     
            $query = mysql_query("INSERT INTO files (id_user,oggetto, date, descrizione, filename, filesize)
                       VALUES ( '".$_POST["codice"]."','".$_POST["oggetto"]."','$date','".$_POST["FCKeditor1"]."', '".$_FILES["upfile"]["name"]."', 
                                    '".$_FILES["upfile"]["size"]."')") or die(mysql_error());
        
            echo "Caricato il file $source_file su $ftp_host come $destination_file";
        }
    
    // chiudere il flusso FTP
    ftp_quit($connect);
    al submit del form, la prima parte del codice me fa l'uload del file, se non ci sono errori mi esegue la query per l'inserimento(tra le altre cose) della descrizione del file:filename,filesize

    se io vado a vedere sul server, il file c'è, quindi perchè devo usare move_uploaded_file?

  4. #4
    quindi qual è il problema?
    l'url del file è $destination_file

  5. #5
    ok, quello che non capisco è come lo recupero dal DB, se ho salvato solo il nome del file

  6. #6
    se la cartella di destinazione è sempre la stessa basta aggiungere prima del nome del file che recuperi il percorso della cartella.

  7. #7
    scusami ma non capisco la sintassi.

    mettiamo caso che faccia la query per estrarre il nome del file per renderlo poi scaricabile:

    codice:
    $query = "SELECT filename FROM files WHERE id_files = ".$GET['id'.";
    
    $select = mysql_query($query)or die(mysql_error());    
    
    $result = mysql_fetch_array($select);
    
    echo...????$result['nome']????
    nell'echo cosa devo metterci oltre a $result['nome']??

    scusa ma tutto quello che riguarda ftp non l'ho mai affrontato.

  8. #8
    ci sono praticamente riuscito...

    codice:
    include("dbconnect.php");
    include("ftp_connect.php");
    
    //query per estrarre il nome del file
    
    $query = "SELECT * FROM files WHERE id_user=100";
    $select = mysql_query($query)or die(mysql_error());    
    
    $result = mysql_fetch_array($select);
    $name = $result["filename"];
    
    // SE IL BROWSER E' INTERNET EXPLORER
    if(ereg("MSIE ([0-9].[0-9]{1,2})", $_SERVER["HTTP_USER_AGENT"])) {
    
    header("Content-Type: application/octetstream");
    header("Content-Disposition: inline; filename=$name");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Pragma: public");
    
    } else {
    
    header("Content-Type: application/octet-stream");
    header("Content-Disposition: attachment; filename=$name");
    header("Expires: 0");
    header("Pragma: no-cache");
    
    
    }
    
    
    // RECUPERO IL FILE 
    
    $destination_file = 'c:/'.$name;
    
    $source_file = '/prove/prova_ftp/'.$name;
    
    ftp_get($connect, $destination_file, $source_file, FTP_BINARY) or die("Errore durante il recupero del file dal server ftp");
    
    echo "<a href=\"$surce_file\">$source_file</a>";

    problemi

    - quando apro la pagina, con firefox mi apre automaticamente la finestra per il download.
    - explorer mi apre la pagina, ma quando clicco sul file mi visualizza il contenuto della cartella anzichè quella per il download.
    - invece di visualizzarmi solo il nome del file, mi appare anche il percorso: /prove/prova_ftp/nome_file

    sono fuso help!

  9. #9
    Scusami non capisco perchè fai questo casino.
    Mettiamo in chiaro le cose....

    Tu d'amministrazione fai l'upload del file nella cartella
    /prova/prova_ftp/
    e automaticamente nel database inserisci i dati che ti servono nel tabella apposita.
    dopo questo l'ftp non ti serve più dato che i file li tieni in una cartella del webserver.

    Lo script per il download sarà così:

    $result = mysql_query("SELECT filename FROM files WHERE id_files =\"{$GET['id']}\"")or die(mysql_error());
    while($row=mysql_fetch_assoc($result)){
    echo"<a href=\"/prova/prova_ftp/{$row['filename']}\">scarica ol programma {$row['filename']}</a>";
    }

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.