Ich habe eine einfache todos-Anwendung, in der ich versuche, ein Foto zusammen mit einem einzelnen Todo hochzuladen. Jetzt habe ich diese Factory-Funktion erstellt, die sich um die Erstellung der Todo kümmert.
%Vor%Und die Factory-Update-Methode sieht so aus
%Vor%Das insertTodo funktioniert wie erwartet, aber das updateTodo gibt keine Daten auf dem Server aus. Ich benutze Laravel für die API und der Update-API-Endpunkt hat diesen Code
%Vor%Dies zeigt, dass die Notiz in der Anfrage gepostet wurde. Und wenn ich den Post in der updateTodo Factory-Methode ändern, beginnt es zu arbeiten. Fehle ich einige zusätzliche Header oder etwas?
Wenn ich die transformRequest
und headers
Form der updateTodo Methode entferne, werden die Textdaten erfolgreich auf dem Server empfangen, aber die Datei nicht.
Und wenn ich nur die headers
nothing entferne wird gepostet
Ich benutze den PHP-Server, der mit Laravel kommt, mit diesem Befehl
%Vor%Dank @ Ricardos Antwort konnte ich die übermittelten Daten unter Verwendung dieses Codes erhalten
%Vor%Ich erhalte den Stream in diesem Format
%Vor%Jetzt muss ich dieses Rohformat analysieren. Ich habe zwei PHP-Methoden gefunden, die andere Leute vorgeschlagen haben Ссылка und Ссылка , aber beide funktionieren nicht richtig und geben kein Array wie $ _GET oder $ _POST.
Dieser Teil der PHP-Dokumentation behandelt die PUT-Methode und Datei-Uploads (mehrteilige / Formulardaten).
Ich kann keine Teile daraus zitieren, weil ich denke, dass alles wichtig ist. Sie sollten es im Detail lesen, aber um es zusammenzufassen ist es nicht möglich ohne Änderungen an Ihrer Apache-Konfiguration und der Erstellung von Hilfsskripten.
Bei Laravel sollten Sie Form Method Spoofing verwenden (im Grunde eine Variable namens _method
) und weiterhin POST verwenden. Mit dem _method
können Sie Laravels PUT-Aktion korrekt aufrufen.
Bearbeiten
AngularJS sendet standardmäßig Daten im JSON-Format, weshalb Sie nicht auf die Daten mit dem $_POST
global zugreifen können. Ich habe dies in einer weiteren Frage beantwortet, in der erklärt wird, was Sie tun müssen.
Ich denke, Sie müssen die Datei serverseitig serialisieren, und wenn Sie eine Datei senden, fügen Sie einen benutzerdefinierten Header hinzu und behandeln diese Headeranforderungen auf der Serverseite entsprechend.
Erstelle dir formData
upfront - & gt; Sie brauchen den Transformator dafür nicht.
Füge transformRequest : angular.identity
zu deinen HTTP
Kopfzeilen hinzu.
Ihr Code sollte ähnlich wie das folgende Snippet aussehen:
Winkelidentität führt nicht mehr aus, als Ihre Formulardaten zurückzuspucken: Ссылка
Tags und Links javascript angularjs http laravel-5