2017-10-04 2 views
0

Also habe ich versucht, eine Audiodatei über einen $ http-Dienst mit FormData zu senden, und bis jetzt, was ich versucht habe, die Datei zu senden, hat noch nicht funktioniert.

Dies ist, wie der Dienst wie folgt aussieht:

songs_services.add_new_song = function(new_song_name, new_song_artist, song) { 
    var fd = new FormData(); 

    fd.append("new_song_name", new_song_name); 
    fd.append("new_song_artist", new_song_artist); 
    fd.append("song", song); 

    console.log(fd.get("new_song_name")); 
    console.log(fd.get("new_song_artist")); 
    console.log(fd.get("song")); 

    return $http.post(BACKEND_PREFIX + "add_new_song", fd, { 
     transformRequest: angular.identity, 
     headers: {'Content-Type': undefined} 
    }).then(function() { 

    }, function() { 

    }); 
}; 

ich sicherstellen wollte, dass die Informationen tatsächlich an meine Formdata angehängt worden ist, und das ist, was ich in der Konsole:

enter image description here

So jetzt weiß ich, dass die FormData tatsächlich die Informationen, die ich brauche.

Ich habe auch versucht, den Content-Type zu multipart/form-Daten ohne Erfolg auch zu ändern.

Ich bin auch CakePHP 2 als mein Backend verwenden, so ist dies, wie ich versuche, die Informationen zu bekommen:

public function add_new_song() { 
    $this->autoRender = false; 

    $data = json_decode(file_get_contents("php://input")); 

    print_r($data); 
    print_r($_POST); 
    print_r($_FILES); 

    $new_song_name = $_POST["new_song_name"]; 
    $new_song_artist = $_POST["new_song_artist"]; 
    $song = $_FILES; 

    echo $new_song_name; 
    echo "<br />"; 
    echo $new_song_artist; 
    echo "<br />"; 
    print_r($song); 

    die(); 
} 

Aber Echo der Variablen zeigen nur leere Arrays und ich bekomme auch einen undefinierten Index Fehler beim Versuch, auf die Variablen von $ _POST zuzugreifen.

Gibt es eine spezielle Möglichkeit, die Audiodatei über $ http zu senden? Ich habe wirklich das Gefühl, dass mir ein kleines Detail fehlt.

+0

Ich habe versucht, ein Bild hochzuladen mit dem gleichen Code und ich etwas in CakePHP bekommen. Das Problem scheint nur bei Audiodateien zu liegen. –

Antwort

0

Endlich entschied ich mich statt $ angularjs $ http.post mit $ .ajax zu versuchen und zu sehen, was passiert ist, und es hat tatsächlich funktioniert!

Hier ist, was ich verwendet:

$.ajax({ 
    type : "post", 
    url : "uploads/songs", 
    data : fd, 
    cache : false, 
    contentType : false, 
    processData : false, 
    success: function() { 
     console.log("Hey"); 
    } 
}); 
Verwandte Themen