Erstellen einer API für mein PHP-Skript - Datei hochladen
Okay hier ist es: (ich ändere diesen post den Inhalt zum Dritten mal besser zu erklären)
Meine website ist ein Image Hosting website, D. H. der Benutzer kann das hochladen auf meine website und erhalten Sie einen direkten link zu seinem/Ihrem hochgeladenen Bild.
Brauche ich irgendeine Art von API/Art der Kommunikation von meiner Seite aus mit meinem Benutzer. Ich möchte die Benutzer, die registriert sind, auf meiner website in der Lage sein, um BILDER HOCHLADEN von Ihrer website zu meiner Image Host ohne Sie verlassen müssen, um Ihre eigene website (AJAX, iFrame, cURL, JSON, was es braucht).
Die Anfrage auf meiner website sollte eine &request=api
Parameter, damit der Benutzer bekommt plain text zurückgegeben, die von meinem upload.php script. Auf diese Weise denke ich, dass ich sicher einen einfacheren Weg von grabbing Daten - /Ausgabe-von meiner Seite aus.
Also, im Grunde, NACH eine POST/DATEIEN die Anforderung vom Benutzer, die Website zu meinem Image Host, erhalten Sie link(s) von meinem upload-Skript verarbeitet, die Sie benötigen, abrufen und verwenden Sie dann für Ihre eigenen Bedürfnisse.
Meine Frage ist: Meine registriert Benutzer sendet eine Datei auf meinen server OHNE die Seite neu zu laden und wieder bekommt die URL(s) auf das Bild. Wie mache ich das?
Was ich versucht habe:
Alle meine versuche waren Blockaden nicht weiter.
Ersten, fügte ich zwei neue Spalten auf zwei verschiedene Tabellen. Meine Benutzer-Tabelle erhielt eine api_key
Spalte, die bestimmt war, zu speichern, einen API-Schlüssel, wenn der Benutzer tatsächlich Anzeichen dafür. Die andere Spalte is_api
wurde Hinzugefügt, um die Tabelle, wo ich speichern Bild Informationen, nur registrierte user haben Ihre Bilder in der Datenbank gespeichert. Mit dieser neuen Spalte (die Art TINYINT
) ich wollte überprüfen, dass das Bild aus der user war (oder nicht war) Hinzugefügt/hochgeladen über die API.
Benutzer sendet eine Anforderung an meine Image Host mit folgenden Parametern: upload.php?submit=true&action=upload&request=api&key=_SOME_API_KEY_
. Ich nehme den API-key und überprüfen, wem es gehört -> Abrufen eines Benutzer-id, basierend auf den Schlüssel -> Speichere ich das Bild auf meinen server -> ich die Speicherung von Bildinformationen in meiner Datenbank (eine Benutzer-id jetzt) -> ich echo
aus der URL.
Meine Fehler hier waren:
- Konnte ich nicht senden ALLES von der 3rd-party-website, um meine Image Host asynchron
- Ich konnte nicht alles wieder zurück zu meinem 3rd-party-website.
Warum diese Ausfälle? , Weil ich keine Ahnung habe, wie das erreichen dieser beiden wichtigen Schritte.
Einer meiner Ideen, um aufhören zu versuchen, zu senden $_FILES[]
zu meinem Image Host, wurde versucht, senden Sie eine BILD STRING über POST auf meinem server und erstellen Sie das Bild selber. Ich konnte nicht, es war nur ein Gedanke von einem Mann, der hatte Zeit zum nachdenken.
So, das ist es: Mein großes problem, keine Lösung von mir.
Wenn Sie mehr Informationen benötigen, um mir zu helfen, leichter, bitte.
Danke.
Update
Wenn ich gerade erhalten könnte die Datei irgendwie (asynchron), würde ich es registrieren und in der Datenbank mit der is_api
Feld mit einem Wert von 1, um Sie zu markieren, wie über die API (extern). Ich habe auf diese Weise erstellen Sie eine neue Datei namens viewer.php
vielleicht und würde es akzeptieren einige Parameter zu wie viewer.php?request=api&key=_API_KEY_
und es würde wieder eine JSON-Seite mit dem link zu dem neuesten Bild von diesem externe api Benutzer. Das abrufen der Seite über JSON von der 3rd-party-website wäre ganz einfach. So, mit dieser Methode, die ich im Grunde nur brauchen, um zu erhalten das Bild irgendwie in meine Image Host und das abrufen von Teil zu schwierig wäre. Also, wie würde ich eine E - BILD STRING zu meinem Image Host über POST?
Wenn diese neue Idee von mir ist ausnutzbar, lassen Sie es mich bitte wissen.
- Haben Sie versuchen, senden den link per JSON oder XML an einen Ajax-client oder schicken Sie es an den Ajax-client in gerader text?
- Ich habe nicht versucht, etwas mit JSON, denn ich habe keine Idee, wie es zu benutzen, daher die Frage. Meine AJAX-Kenntnisse sehr begrenzt zu.
- Klingt wie es sein könnte in der Regel sehr einfach in ein iframe, welches eine wirkliche form, die Beiträge zurück zu den Bild-host. Es wird Aussehen wie ajax (als iframe verhindert, dass die Seite in voller post) und zurück können Sie die links in der resultierenden Seite, weil die Antwort direkt an den iframe.
- Könnten Sie mir zeigen, ein Beispiel von dem, was du sagst? Vielleicht ist Ihre Antwort tatsächlich funktionieren würde und dann könnte ich es akzeptieren.
- Werfen Sie einen Blick auf dieses viralpatel.net/blogs/...
- Ich bin mir nicht sicher, ob es machbar. Es klingt wie etwas, das der browser würde wollen, zu stoppen wegen Sicherheitsbedenken. Die Art und Weise, ich habe gesehen, dass es für die third-party-server zu akzeptieren, hochladen, übertragen Sie es dann auf die Bild-hosting-Website-server zu server. Die Bandbreite zwischen den Rechnern ist in der Regel Recht hoch, so dass der overhead ist akzeptabel.
- Ich bearbeitet die Frage, Lesen Sie es bitte jetzt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin die Bereitstellung einer Schrift, wie diese ein, um meine Benutzer als eine Brücke zu meiner website:
Dann Mach ich den rest der Verarbeitung meiner website basierend auf den Informationen, die ich erhalte. Ich werden die Aktualisierung dieser Antwort, ich beende mal die komplette API von CP auf meiner website, wo die webmaster, die die API verwenden, können sehen, welche Bilder hochgeladen wurden, die über seine website, um meine Bild-Host. Aus dem script oben finden Sie einen API-Schlüssel - es ist einzigartig für jeden Benutzer, die obige ist nur ein Beispiel.
Für asynchrone habe ich es zu arbeiten, indem er dem Benutzer die jQuery Form plugin. Es ist ein sehr praktisches plugin für Formulare Absenden und ich dem Benutzer zeigen, wie Sie es tun würde.
Danke für alle die versucht haben mir zu helfen.
Versuchen Sie es mit
für die php-Seite (vergessen Sie nicht, um eine JSON MIME-Typ-header) der link in der Frage und
mithilfe von jQuery auf der Empfängerseite. Sie können dann legen Sie den erhaltenen link in den div oder Absatz (oder was auch immer), die Sie mögen. Wenn der hyperlink einer bereits vorhandenen hyperlink wird verändert/aktualisiert wird, können Sie ändern Sie den hyperlink mit jQuery.
Diese links können helfen:
http://www.w3schools.com/jquery/ajax_getjson.asp
http://php.net/manual/en/function.json-encode.php
Bitte werfen Sie einen Blick auf meine RestServer-Klasse auf GitHub. Es wird Ihnen erlauben, jede PHP-Klasse in einen RESTful web service (Rückgabe von JSON-Antworten). JSON ist der Weg zu gehen für diese Arten von Reaktionen und RestServer kümmern Codierung Ihres Rendite-Objekte als JSON vor der Rückgabe der Daten an den client.
Können Sie machen Sie GET-Anforderungen wie
http://mysite.com/myapi.php?method=sayHello&name=World
wo der query-string verlangt, den Namen einer Methode, und jeder Parameter für diese Methode. POST-Anfragen werden ebenfalls unterstützt, indem einfach Ihre Anfrage zu POSTEN und einschließlich Ihrer Parameter in den POST-body.Es erkennt automatisch den params benötigt für die angeforderte Methode. Sie könnten Einrichtung einer geheimen API-Schlüssel, der auch als erforderliche Parameter für jede API-Methode zur Authentifizierung.
Dann würden Sie nur den Anruf mit $.getJSON mit jQuery.
Es klingt wie Sie sind, mit einem web-Formular, so sollten Sie sich streng verwenden Sie den POST. Es gibt keine die erste Runde mit einem Skript irgendwo, wenn Sie möchten, dass der client zu senden Sie eine Zeichenfolge (aber warum sollte Sie Sie haben, dies zu tun?).
Wenn Sie POST ' Ing ein Formular die Methode POST verwenden, dann haben Sie eine server-side-Skript verwenden, LEGEN Sie für das schreiben eines backend-API-Servers, die wieder eine JSON-Seite mit dem link auf das Letzte Bild.
Wenn Sie schreiben direkt an die API, Folgen der gleichen Konvention, außer Ihre Benutzer direkt (gesagt ist nicht verfügbar in der web-Formulare, nur POST und GET).
BEARBEITEN:
Ich habe eine mögliche Lösung für Sie für die client-Seite mit HTML5. Du könntest das Bild in ein html5-canvas und konvertieren Sie die Daten in eine Zeichenfolge. Dann nehmen Sie einfach die Zeichenfolge, und schicken Sie es über das Formular. Sehen diese Antwort für mehr info auf, wie dies zu tun.
Zusammenfassen: setzen Sie das Bild in das canvas-DOM-element, konvertieren Sie dann das canvas-Daten in einen string.
Wie wäre Erhalt der ursprünglichen Anfrage von 3rd-party-Website, um Ihr Bild mit Ihrem Gastgeber upload.php thru POST dann innerhalb von upload.php leiten Sie die Anfrage an eine andere Seite per AJAX aufrufen. Auf diese Weise wird es asynchron. Ich denke, es ist machbar diese Weise.