[PHP] Upload stesso file

solari77

Utente Attivo
6 Ott 2016
99
1
8
Ciao a tutti , ho un form con type=”file” che mi permette di caricare un file presente sul mio Pc.
Ora i invece si presenta la necessità di caricare sempre lo stesso file, quindi vorrei omettere il passaggio di scegliere il file e caricarlo, e quindi prelevare sempre lo stesso file che si trova in una specifica cartella sul PC.
Tutto questo dovrebbe avvenire quando apro una specifica pagina PHP.
Posso fare in qualche modo?
Grazie
 
Ultima modifica:

mr.x

Utente Attivo
9 Apr 2016
223
22
28
elimina il form per la scelta del file e passa direttamente allo script il path completo di ciò che deve essere caricato.
 

solari77

Utente Attivo
6 Ott 2016
99
1
8
Ciao,grazie per la cortese risposta.
Forse non ho capito.Eliminando completamente il form per la scelta del file poi come faccio ad importare?
Nel form tramite il submit viene caricato il file.Eliminandolo come faccio a caricarlo ?
Io ho questa situazione :

Codice:
<form class="form-horizontal" action="" method="post"
                name="frmCSVImport" id="frmCSVImport" enctype="multipart/form-data">
                <div class="input-row">
                    <label class="col-md-4 control-label">Choose CSV
                        File</label> <input type="file" name="file"
                        id="file" accept=".csv">
                    <button type="submit" id="submit" name="import"
                        class="btn-submit">Import</button>
                    <br />
</div>
 </form>

if (isset($_POST["import"]))
 {  
    $fileName = $_FILES["file"]["tmp_name"];
    echo $fileName;
        if ($_FILES["file"]["size"] > 0)
{      
        $file = fopen($fileName, "r");
        $sql = "TRUNCATE TABLE dossier";
        $result_sql = $mysqli->query($sql);
        while (($column = fgetcsv($file, 10000, ",")) !== FALSE)
 {
            $sqlInsert = "INSERT……………….
}
              }
}
 

mr.x

Utente Attivo
9 Apr 2016
223
22
28
ciao
ero io che nn avevo capito che volevi caricare il file da locale a remoto e poi fare il parsing..
cmq provo così per il caricamento del file:

PHP:
function locale2romoto($path_locale, $path_to_save){
        $ch = curl_init ($path_locale);
        curl_setopt($ch, CURLOPT_HEADER, 0);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
        $raw=curl_exec($ch);
        curl_close ($ch);
        if(file_exists($path_to_save)){
            unlink($path_to_save);
        }
        $fp = fopen($path_to_save,'x');
        fwrite($fp, $raw);
        fclose($fp);
    }
locale2romoto("file:///percorso/delfile/da/caricare.csv","file.csv") // passa i valori corretti alla funzione
si presuppone che il cUrl si abilitato e la cartella di destinazione scrivibile. Una volta caricato il file per l'elaborazione e scrittura nel db utilizzi la porzione di codice che usi attualmente.

P.S. il percorso del file sorgente deve essere assoluto, la forma che ho scritto nel file funziona su linux, su win probabilmente devi modificare in file:// o C://
 

solari77

Utente Attivo
6 Ott 2016
99
1
8
Cioa, io stò operando su Windows.
Ho provato sia con file:// o C:// in entrambi i casi mi genera il file .csv sul server, ma il file
è sempre vuoto
 

mr.x

Utente Attivo
9 Apr 2016
223
22
28
se il cdv è vuoto è perchè il file non viene trovato/letto ....
prova a mettere il file direttamente in C e vedere se da li riesci a leggerlo (per escludere problemi relativi a path di sottocartelle).
 

solari77

Utente Attivo
6 Ott 2016
99
1
8
Ciao ho messo il file csv su C e poi questo codice "file:///C:/file.csv" .
Però sul server continua a caricare ogni volta un csv vuoto.
Premetto che ogni volta che riprovo vado a cancellare il file csv sul server, anzi riguardo a questo, se il problema verrà risolto volevo anche chiedere se è possibile ad ogni chiamata, cancellare o sovrascrivere questo file, ma questo è un problema successivo.Anzi magari questo lo fà già ma io non me ne stò accorgendo perchè cancello sempre il file prima di riprovare ?
 

solari77

Utente Attivo
6 Ott 2016
99
1
8
Ciao, purtroppo ancora non và, sempre un csv vuoto.
Una curiosità,nella funzione che hai creato come secondo parametro indichi "path_to_save". E' una dicitura indicativa , oppure come secondo parametro intendevi il percorso dove salvare ?
Ciao e grazie per la tua disponibilità
 

mr.x

Utente Attivo
9 Apr 2016
223
22
28
Una curiosità,nella funzione che hai creato come secondo parametro indichi "path_to_save". E' una dicitura indicativa , oppure come secondo parametro intendevi il percorso dove salvare ?
Ciao e grazie per la tua disponibilità
il secondo argomento della funzione ($path_to_save) lo passi quando richiami la funzione stessa; puoi inserire un nome qualsiasi che verrà poi valorizzato con ciò che passa la chamata alla funzione,

PHP:
<?php

function funzione($a,$b){

echo "<br>valore del primo argomento: ".$a;
echo "<br>valore del secondo argomento: ".$b;
}

funzione(1,2); //passo i valori 1 e 2

funzione("patate", "lisce") // passo la stringa patate come primo argomento e lisce come secondo argomento

?>
Per il momento non so come aiutrti..
Una domanda: ma il file lo crei/modifichi in locale? o lo scarichi da qualche servizio online e lo carichi poi sul tuo server?
 

solari77

Utente Attivo
6 Ott 2016
99
1
8
Ciao io scarico un file in formato xlsx da un sito web protetto da user e password. Poi converto il file xlsx in csv e a questo punto vorrei caricarlo sul server.
 

mr.x

Utente Attivo
9 Apr 2016
223
22
28
te lo chiedevo perchè nel caso potevi anche scaricarlo direttamente sul tuo server (senza il passaggio in locale).
Però vedendo i passaggi che che operi forse ti risulterebbe più complicato.