URL verstecken bei AJAX/JSON Request ?

Bicko

Erfahrenes Mitglied
Hallo,

Ich versuche mich gerade an einem Bilderupload, was auch soweit ganz gut funktioniert.

Ich benutzte dafuer AJAX und JSON, bin auf dem Gebiet aber eher noch ein Anfaenger.
Mein Sourcecode in kurz:

Code:
new AjaxUpload('upload_button', {
  action: '/image/upload/',
  name: 'userfile',
  autoSubmit: true,
  responseType: 'json',
  onChange: function(file, extension){},
  onSubmit: function(file, extension) {

    //set file permission
    if (! (extension && /^(jpg|png|jpeg|gif)$/.test(extension))){
	alert('Error: Wrong Extension.');
	return false;
    }
},
  onComplete: function(file, response) {
    if(response.status == 'success') {
    var list_item = '<li>
    <img src="/uploads/'+ response.thumb_folder +'/'+ response.thumb_name +'" />';
}

In meinem PHP Scrip wird das Ganze also auf den Server geschoben und eine Antwort zurueckgeschickt.
$return = Zend_Json::encode($data);

Das Bild wird angezeigt, also so wie es auch sein soll. Wenn ich in den Quelltext schaue, wird natuerlich die URL zum Bild angezeigt.

Habe mir nun jedoch ueberlegt, das ich die URL des Bildes nich anzeigen moechte. Im www gesucht und ein einfaches Script gefunden, wo man statt einem Bildpfad einfach z.B eine img.php Datei einbindet und dort dann nur:

PHP:
header("content-type:image/jpg");
$path = "test.jpg";
$str = file_get_contents($path);
echo $str;

reinschreibt. Das Bild wuerde ich also nur noch so aufbauen <img scr="img.php">

Doch wie kann man das Umsetzen, wenn man mit AJAX/JSON arbeitet? Ist das ueberhaupt moeglich? Habt Ihr einen Typ oder einen Link, wo so etwas gezeigt wird?

Manchmal sieht man ja auch eine Bild URL die dann so aussieht dakfjsdfgdfdnbmfnwkehff.jpg oder so aehnlich. Ist das einfacher umzusetzen?

Hoffe jemand kann mich in die richtige Richtung schuppsen. Vielen Dank schonmal im Voraus.

Bicko
 
Das Erste, was mir auffiel, war, dass in deinem Skript du es dir viel zu umständlich machst. So geht das Ganze auch:
PHP:
header('Content-Type: image/jpg');
readfile('test.jpg');

Zu deinem eigentlichen Problem: theoretisch könntest du es so lösen, wie du es dir gedacht hast. Allerdings hast du dann ein Problem, wenn du entweder mehrere unterschiedliche Bilder gleichzeitig über diesen Pfad angeben willst, oder wenn der Browsercache dir dazwischen funkt. Generell solltest du so etwas vermeiden, also uneindeutige Resourcenangaben.

Am besten wäre es, wenn du die Bilder während des Hochladens mit einem eindeutigen kryptischen Namen speicherst. Dafür kannst du als Beispiel einen MD5-Hash aus Originalphotoname und Zeitstempel verwenden.
 
Hi einfach nur crack,

An ein einfaches renamen der Datei habe ich auch bereits gedacht, aber dann sieht man ja immer noch den Pfad, wenn ich es richtig verstehe oder?
 
Richtig, aber ich dachte, dass du eine Möglichkeit suchst, dass man den Originalnamen nicht sieht. Ansonsten gibt es nur noch die Möglichkeit, dass du Pixel für Pixel des Bildes in PHP auseinander nimmst, diese dann per AJAX an Javascript schickst und von dort dann in ein canvas-Element schreibst. Davon würde ich dir aber in jedem Fall abraten.

Oder du schreibst den Pfad des Bildes nicht direkt in den Quelltext, sondern fügst dieses erst während des Ladens mit Javascript ein. Davon würde ich dir aber auch abraten.
 
Im Moment lade ich das Bild ja auch mit Javascript rein. Ich benutze ja jQuery, AJAX und JSON, lade das Bild hoch, bekomme den Order und Bildnamen per JSON zurueck und via jQuery wird mir das gerade hochgeladene Bild angezeigt.

Ich verstehe nicht so ganz, wie die grossen Seiten das machen. da scheint einiges ueber Javascrip zu laufen, nur verstehe ich das Prinzip nicht so ganz.
 
Mmh. Ok, habe nochmal geschaut und es war doch ohne Javascript.

Ich moechte die Bilder eigentlich so speichern:

images/uploads/userA/testbild.jpg
images/uploads/userB/meinbild.jpg

Nur moechte ich halt das der Link so nicht im img tag auftaucht, sondern halt verschluesselt.

Ist es denn moeglich im img tag eine php Datei reinzunehmen, obwohl ich das Ganze per JSON zurueckbekomme und wenn ja, wie?
 
Zurück