FormData aggiungere non funziona

Ho scritto questo per caricare un’immagine per il mio locale webserver Apache utilizzando input elemento HTML. Il file è registrato come non è vuota, ma perché è il form_data completamente vuoto?

$('#upload-image').change(function(e){
    var file = e.target.files[0];
    var imageType = /image.*/;
    if (!file.type.match(imageType))
        return;
    console.log(file);
    var form_data = new FormData();
    form_data.append('file', file);
    console.log(form_data);
    $.ajax({
        url: 'http://localhost/upload.php',
        cache: false,
        contentType: false,
        processData: false,
        data: form_data,
        type: 'POST',
        success: function(response){
            console.log(response);
        },
        error: function(error){
            console.log(error);
        }
    });

});

Questo è il mio upload.php sul webserver locale

<?php
    header('Access-Control-Allow-Origin: *');
    if ( 0 < $_FILES['file']['error'] ) {
        echo 'Error: ' . $_FILES['file']['error'] . '<br>';
    }
    else {
        move_uploaded_file($_FILES['file']['tmp_name'], 'uploads/' . $_FILES['file']['name']);
        $target_path = $_SERVER['DOCUMENT_ROOT'] . "/uploads/" . $_FILES['file']['name'];
        echo $target_path;
    }
?>

Il console.log(response) registri di tutte le linee di codice del file PHP, invece del risultato restituito di echo

  • avete provato a usare l’url solo ‘upload.php’ ? Non è comune vedere un percorso assoluto, e per non parlare del locale, ricordatevi che la chiamata AJAX, dipende da dove il file javascript si trova, così, per esempio, se si dispone di una cartella all’interno della root del vostro denominato “phpFiles/upload.php” e, quindi, che dovrebbe essere messo nell’url.
  • console.log(form_data); ciò che è o/p rimanere qui?
  • Che cosa ti aspetti di vedere? Non si può davvero registrare un formData oggetto, quindi dovrebbe essere vuoto, anche se il file è presente. Hai controllato il server se il file è stato ricevuto o meno.
  • Dove va a salvare? Non riesco a trovare la posizione di uploads cartella
  • Penso che sia /var/www/html ma non riesco a vedere uploads c’
  • Tu sei quello che dice dove spostare i file, quindi basta creare una cartella e salvare i file ?

InformationsquelleAutor necroface | 2016-10-15

 

2 Replies
  1. 40

    Quando la registrazione di un formData oggetto con solo console.log(formData) torna sempre vuoto, in quanto non è possibile accedere formData.

    Se devi solo accedere, prima di procedere all’invio, è possibile utilizzare entries() per ottenere le voci nel formData oggetto

    $('#upload-image').change(function(e) {
        var file = e.target.files[0];
        var imageType = /image.*/;
    
        if (!file.type.match(imageType)) return;
    
        var form_data = new FormData();
        form_data.append('file', file);
    
        for (var key of form_data.entries()) {
            console.log(key[0] + ', ' + key[1]);
        }
    
        $.ajax({
            url: 'http://localhost/upload.php',
            cache: false,
            contentType: false,
            processData: false,
            data: form_data,
            type: 'POST',
            success: function(response) {
                console.log(response);
            },
            error: function(error) {
                console.log(error);
            }
        });
    
    });
    • Quando non è possibile memorizzare sul webserver? Non riesco a trovare la posizione di uploads
    • Penso che sia /var/www/html ma non riesco a vedere uploads c’
    • esattamente quello che volevo..Grazie

Lascia un commento