• Moderatore

    Help in drupal_move_uploaded_file()

    Come da titolo, mi servono delucidazioni in merito a tale funzione.
    Mi spiego brevemente.
    Dato che drupal non accetta move_uploaded_file(), si è costretti a lavorare con tale funzione. Secondo le api di Drupal 7, tale funzione accetta 2 tipi di variabili:
    $filename e $uri
    Ovviamente nelle api, non c'è alcuna dicitura su come valorizzare la variabile $filename, visto che indica:
    $filename: The filename of the uploaded file.
    Quindi a rigor di logica, utilizzo la variabile globale $_FILES['files']['name']
    Ora, fatto il punto, nel momento in cui vado a cercare di caricare un file con questa funzione, mi restituisce sempre false.
    Ho fatto alcuni debug; il file viene caricato nella cartella temporale, ma non si sposta nella sua destinazione.
    Preciso che i permessi anche settati a 777, non cambiano il risultato.
    Dopo di che ho pensato il percorso, può essere un problema, ma sempre secondo le api di Drupal 7, impostando la uri in questo modo:
    $uri = 'public://site/default/files/';
    Il risultato non cambia di una virgola.
    Quindi, dov'è che sbaglio ?

    Grazie in anticipo

    Note
    Per un riferimento alla funzione, appena cercate in google, esce subito fuori la pagina delle api relativa


  • Super User

    Ciao, non riesco a fare una prova al volo, ma secondo me stai sbagliando il file. Nel senso che non devi usare $_FILES['files']['name'] ma $_FILES['files']['tmp_name'], e a ricordi di logica è corretto, perché tu devi spostare un file che in questo caso è quello temporaneo.

    E ho trovato questo script su internet che magari ti puo' essere d'aiuto:

    www exchangeconcept com/2014/09/upload-images-using-_files-in-drupal-7/

    Fammi sapere.

    M.


  • Moderatore

    Ti ringrazio, ma ho risolto stamane. Ripensandoci $uri non è $url ma è url + nome file + estensione, per tanto ( e lo scrivo magari per qualcun'altro )
    $filename = $_FILES['files']['tmp_name'];
    $uri = 'public://' . $_FILES['files']['name']; // oppure $uri = 'public://nome_file.' . $_FILES['files']['type'];
    $result = drupal_move_uploaded_file( $filename, $uri );

    Grazie lo stesso