Bild von HTTP POST mit PHP
So, ich bin das senden eines Bildes über das internet mithilfe von HTTP POST und sende es an ein php-Skript auf meinem server. Ich möchte in der Lage sein zu nehmen, dass Bild und speichern Sie es. Ich mache das gut mit text, aber wenn es um andere Inhalte, wie ein Bild, es ist Fehler-ing sagen, es kann nicht finden Sie die variable, und wenn ich versuche file_get_contents
, es mag nicht, dass entweder. Ich sende das Bild von einem iPhone als auch, so dass meine POST-Anfrage sieht wie folgt aus.
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Disposition: form-data; name=\"media\"; filename=\"dummy.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Type: image/jpeg\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:imageData];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithFormat:@"--%@--\r\n", stringBoundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postRequest setHTTPBody:postBody];
Den rest der Anfrage wird geschrieben, aber ich habe nicht wirklich das Gefühl, wie die Verbuchung aller.
Aber egal, das ist wie ich bin das senden der Anfrage, und auf dem php-server-Seite,
<?php
echo "Some Message";
$nameValue = $_POST['name'];
echo "<br/>";
echo $nameValue;
$otherValue = $_POST['other'];
echo "<br/>";
echo $otherValue;
file_get_contents('dummy.jpg');
//or I tried this
$imageData = $_POST['media'];
?>
Ich kann nicht scheinen, um in der Lage sein zu greifen, die Bild. Beide versuche, sich das Bild ausgefallen und ich weiß nicht, warum. Irgendwelche Vorschläge?
EDIT:
Habe ich noch die print-Anweisung print_r($_FILES)
um zu sehen, was ich bekommen würde und es gab die folgende.
(
[media] => Array
(
[name] => dummy.jpg
[type] =>
[tmp_name] =>
[error] => 1
[size] => 0
)
)
So scheint es, als wenn es immer die Bild, zumindest der name von es, aber aus irgendeinem Grund ist es nicht immer die eigentlichen Daten und wirft einige Fehler. Ich denke, das ist wohl auf die iPhone-Seite der Dinge, wenn es nicht sendet, die Daten und meine PHP-server ist ein Fehler aufgetreten. Ich bin nicht sicher, wenn, jemand schon Erfahrung in so etwas?
EDIT 2:
Habe ich endlich alles funktioniert. Es stellt sich heraus, dass alles war korrekt formatiert, ich war nur mit einer image-Datei Größe-upload-limit Problem. Die Bilder, die ich geschickt wurde, waren rund 8MB und anscheinend ist unser server nicht verarbeiten kann, so dass ich einfach abgeschossen, die Qualität auf jpeg, und das Problem war gelöst. Dann gab es einige Problemen mit Berechtigungen, als auch, nichts ein wenig sudo chmod
nicht lösen können. Vielen Dank an alle für Eure Vorschläge und Hilfe, ich wünschte, ich könnte mehr als eine Antwort!
InformationsquelleAutor MZimmerman6 | 2012-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Fehlercode "1" bedeutet, dass das Bild, das Sie versucht hochzuladen, ist zu groß.
http://php.net/manual/en/features.file-upload.errors.php
Überprüfen Sie Ihre Einstellung upload_max_filesize in php.ini.
Sah ich, daß Ihr versuchen, weiterhin mit $_FILES['media']['name'], aber die tatsächlich hochgeladene Datei verfügbar ist, indem Sie den Pfad in $_FILES['media']['tmp_name'].
Werden Sie sicher, dass Sie mit Ihrem upload korrekt, siehe php-Doku:
http://php.net/manual/en/features.file-upload.post-method.php
ok. Ich sah Sie vielleicht brauchen, um Lesen Sie weiter auf wie zu handle-Datei-uploads mit php. Also bearbeitete ich ny Antwort mit ein paar mehr Informationen
Vielen Dank! Ich habe erfolgreich geworden das Bild auf meinem Rechner, vom iPhone, über HTTP-POST-Methoden. Ich war auch in der Lage, verschieben Sie das Bild richtig herum durch Verzeichnisse und all das, so soll alles ziemlich gut sein, zu gehen. Nochmals vielen Dank!
Die angehängten links sind tot.
danke, behoben
InformationsquelleAutor Jojo
Zuerst müssen Sie das Ergebnis von
file_get_contents
(1), dann müssen Sie dem browser mitteilen, dass Sie dienen, ein Bild anstelle des standard-HTML (2).Ich nur relativ oberflächlich behandelt, für die
header
Funktion; Sie möchten fügen Sie ein paar mehr überschriften in einem realen Fall. Check-out:Versuchen Sie es mit
readfile
stattfile_get_contents
Das Problem ist, dass ich nicht über eine Kopie der Datei lokal gespeichert, es ist kommen in der http-post. Immer wenn ich versuche, diese Methoden zu verwenden, scheint es, als wenn es gesucht wird, das Bild lokal, nicht von der post die Nachricht, die er erhielt, basierend auf der Fehlermeldung, die ich erhalte. 'Warning: readfile(dummy.jpg): failed to open stream: Keine solche Datei oder Verzeichnis in [server-Verzeichnis] on line 11'
Also... ist jemand übergeben Sie eine URL zu einem Bild über
$_GET
oder sind Sie zu meistern versucht einen upload und das anzeigen der hochgeladenen Datei?InformationsquelleAutor wanovak
Überprüfen Sie die $_FILES-array auf der PHP-Seite und sehen, ob Ihr Bild ist dort...
Tun
print_r($_FILES);
Toll, ich sehe, dass das array enthält den Namen, sondern enthält auch einen Fehler mit status 1 (nicht gut) und dass die Größe der Datei ist null. Ich bin sicher, dass dies dazu führen Sie zu dem Ergebnis, fixieren Sie Problem... Glücklich zu helfen!
InformationsquelleAutor ElasticThoughts