2017-04-14 7 views
1

Ich habe bereits ein paar Fragen dazu gestellt und jeder Schritt bringt mich näher, aber es funktioniert immer noch nicht wie beabsichtigt.Bild nach Bild hochladen und alle anzeigen

Ich möchte ein Bild hochladen und in die Textdatei schreiben, dann, wenn ich ein anderes Bild hochladen, das bis zum Ende geschrieben wird und so weiter. Sie haben also eine lange Datei mit vielen Bildern.

Soweit ich sagen kann mein Code sollte funktionieren, aber es nicht. Hier ist ein Link zur Seite website for testing. Testen Sie es vielleicht nützlich und unten ist der Code.

Es erstellt auch immer ein leeres Element am Ende des Arrays, wie Sie aus dem Testen der Website sehen können.

Die PHP:

$sFileName = "imgDB.txt"; 

for ($i=0 ; $i < count($_FILES) ; $i++) { 
    move_uploaded_file(
     $_FILES['file-'.$i]['tmp_name'], 
     "img/". $_FILES['file-'.$i]['name'] 
    ); 
} 

$sImgs = file_get_contents($sFileName); //gets a string from the file. 

if (json_decode($sImgs, true) != false) { 
    $ajImgs = json_decode($sImgs, true); 
} else { 
    $ajImgs = array(); 
} 

$aOutPut = array_merge ($ajImgs, $_FILES); 

$aSendToFile = json_encode(
    $aOutPut, 
    JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE 
); 
file_put_contents($sFileName, $aSendToFile); 
+0

Der Link, den Sie zur Verfügung gestellt, auf http: // wonx. dk/imgUploaderas, funktioniert nicht –

+0

Danke für die Köpfe, ich habe es behoben :). – Wonx2150

Antwort

1

Einige Bemerkungen

  • wenn der move_uploaded_file Anruf nicht weiter geschützt ist, dies ermöglicht beliebige Dateien hochladen, einschließlich Skriptdateien - das öffnet eine Sicherheitslücke in der Anwendung - auf MIME-Typ und Dateierweiterung prüfen, um dies zu vermeiden.
  • json_decode gibt null zurück, wenn der Eingabewert leer ist oder nicht entschlüsselt werden kann - nicht false wie in Ihrem Code
  • auf ein Array anhängt erfolgt nicht mit array_merge, dies überschreibt nur die Eigenschaften von $_FILES der vorherigen Ausführung - verwenden $aOutPut[] = $_FILES; statt