Wie bearbeite ich einen Dateinamen und lösche das Bild aus einem Ordner?

8

Ich versuche, eine Bearbeitungsoption für den Bilddateinamen hinzuzufügen und auch die Option für die Bilder zu löschen. Alle Bilder sind in einem Ordner und ich habe überhaupt keine Datenbank verwendet. Ich bin in der Lage, die Bilddateinamen zusammen mit der Schaltfläche zum Bearbeiten und Löschen neben jedem Bildnamen anzuzeigen.

Aber ich bin mir nicht sicher, wie ich weitermachen soll. Ich weiß, dass PHP eine unlink() und rename() Funktionen hat. aber ich bin nicht sicher, wie man diese Funktionen dynamisch einschließt.

%Vor%     
HebleV 27.11.2016, 15:35
quelle

3 Antworten

3

Zunächst einmal ist das eine gefährliche Sache, die du dort machst und du solltest es vermeiden. Stellen Sie sich vor, was passieren könnte, wenn jemand eine Punktekombination wie diese ../../ ; Das Skript hätte alle Dateien in zwei Ebenen aufgelistet. Um dieses Verhalten zu verhindern, müssen wir die path -Eingabezeichenfolge für Schrägstriche und umgekehrte Schrägstriche überprüfen und die Funktion glob nicht ausführen, wenn einige Schrägstriche vorhanden sind gefunden. Hier ist der reguläre Ausdruck, um die path -Abfrage zu validieren:

%Vor%

Ich habe anhand Ihres Codes ein sehr einfaches Beispiel erstellt. Alle Befehle werden an PHP übergeben, indem Formulardaten an den Server gesendet werden ( nicht AJAX ). Wenn der Benutzer auf die Schaltfläche Löschen klickt, wird eine Bestätigungsmeldung angezeigt, und wenn der Benutzer auf OK klickt, werden die Daten der Löschschaltfläche im Formular gespeichert, nämlich in name="delete" und value="path/filename.ext" . Wir haben einen $_POST['delete'] == "path/filename.ext" -Wert in PHP. Wenn wir die delete in unseren POST-Daten finden, rufen wir unlink auf und wir löschen die Datei. Für die Umbenennungsfunktionalität verwenden wir diesmal die gleiche Methode, diesmal jedoch mit der Javascript-Eingabeaufforderung, die den Benutzer auffordert, einen neuen Dateinamen einzugeben. Wenn sich der neue Dateiname vom Original unterscheidet, aktualisiert er ein verstecktes Feld mit dem neuen Dateinamen und bucht die Formularfelder in unser PHP-Serverskript; Die POST-Daten haben diese Werte für die rename -Funktion $_POST['rename'] == "path/oldfilename.ext" und $_POST['renameto'] == "newfilename.ext" . Dann rufen wir einfach die Umbenennungsfunktion am Anfang unseres Skripts auf.

Tipp : Verwenden Sie PHP print_r function, um das $_POST -Array in einem HTML <pre></pre> zu drucken, um Post-Daten auf jeder Seitenaktualisierung zu debuggen:

%Vor%

Das endgültige Arbeitsskript

%Vor%     
Christos Lytras 06.12.2016, 03:19
quelle
5

Sie müssen den Dateipfad an unlink () übergeben. Wenn Sie mehrere Dateien entfernen möchten, müssen Sie mehrere Male die Verknüpfung aufheben. Wenn Sie die Dateipfade zu einem Array schieben, können Sie die Pfade durchlaufen.

%Vor%

Wenn Sie die Datei umbenennen möchten, müssen Sie auch den vollständigen Pfad angeben, Andernfalls erstellen Sie eine neue Datei woanders:

%Vor%

Diese Information muss von einem Benutzer zumindest in den meisten Fällen bereitgestellt werden. Ich würde empfehlen, die Pfade und Dateinamen in einer Datenbank zu speichern.

    
Jorn 27.11.2016 16:30
quelle
1
  

Ich bin mir nicht sicher, wie ich diese Funktionen dynamisch einfügen soll

Aufgrund Ihrer Frage und Ihres Codes sieht es so aus, als könnten Sie die Dateien löschen oder umbenennen, suchen aber nach einer Arbeitsablaufberatung.

Ich gebe folgende Vorschläge. Wenn Sie Code wünschen, stelle ich gerne meine Lösungen zur Verfügung, aber der Umfang einer Schnittstelle ist ziemlich groß und muss erst geklärt werden. Zum Beispiel

  • Haben Sie Verzeichnisse, durch die der Benutzer navigiert?
  • Möchten Sie, dass der Benutzer Kontrollkästchen hat, um einzelne Dateien zu prüfen (empfohlen) ODER wollen sie, dass sie ein Dateimuster eingeben können, wie das Beispiel zeigt (gefährlich!)?

Meine Empfehlungen:

Verwenden Sie eine Tabelle, um die Dateien anzuzeigen. Über der Tabelle befinden sich Schaltflächen für "Ausgewählte löschen", "Abbrechen"

Fügen Sie die folgenden Spalten in die Tabelle ein:

  • Kontrollkästchen (um mehrere Dateien auszuwählen, wenn dies gewünscht wird)
  • Dateiname (nur Text und kann der Etikettenteil des Kontrollkästchens sein)
  • Editierbare Eingabe mit Dateiname, die dem Benutzer erlaubt,
  • umzubenennen
  • Input Button="Umbenennen" (um einzelne Dateien umzubenennen)
  • Input Button="Löschen" (um einzelne Dateien zu löschen)
  • Miniaturbild, auf das sie klicken können, um ein Bild in voller Größe anzuzeigen.

Die Tabelle befindet sich in einem Formular, so dass jedes <input> mit einer name -Eigenschaft in $_POST endet. Die Eingaben zum Umbenennen und Senden einer Datei sehen beispielsweise wie folgt aus:

%Vor%

Dabei ist $filefull der vollständige Pfad zur Datei und $name ohne Pfad. Wenn Sie auf die Schaltfläche Umbenennen klicken, enthält $_POST Elemente mit jedem Dateinamen, denen filer- vorangestellt ist, damit ich sie leicht erkennen kann. Ich weiß, welchen man umbenennen oder löschen muss, basierend auf dem Submit Button, was ich an der var erkennen kann, der das Präfix fprename- hat.

Wenn ich also von $_POST var mit dem Namen $_POST['fprename-/path/myfile.jpg'] zurückkomme, suche ich nach der Eingabe var $_POST['filer-/path/myfile.jpg'] und benenne die Datei auf den darin enthaltenen Wert um (natürlich überprüfe ich zuerst, dass eine Datei mit diesem Namen nicht existiert Es gibt sie noch nicht).

Arbeitsablauf:

Zum Löschen mehrerer Dateien

  • Der Benutzer wählt Elemente mithilfe der Kontrollkästchen zum Löschen aus und reicht das Formular ein, indem er auf den Delete Selected submit-Button klickt.
  • Das Formular onSubmit gibt ein Javascript alert() , um die Löschanforderung abzubrechen.
  • Nachdem der Nutzer bestätigt hat, möchten Sie Posten / Weiterleiten / Abrufen durchführen (um Mehrfachformulare zu vermeiden) Einreichung). Dazu muss das Formular an ein anderes php (z. B. processFiles.php) gesendet werden, das den unlink () - Code verarbeitet, den Sie dann an die userInterface.php.
  • weitergeleitet haben

Zum Löschen oder Umbenennen einzelner Dateien

  • Der Benutzer klickt in der Tabelle neben den einzelnen Dateien auf eine Senden-Schaltfläche.
  • Die Schaltfläche onclick gibt ein Javascript alert() , um das Löschen oder Umbenennen der Anfrage zu erlauben.
  • Nachdem der Benutzer bestätigt hat, wird das Formular gesendet. Auch hier möchten Sie einen Post / Redirect / Get erstellen, bei dem ein anderer php (z. B. processFiles.php) den unlink () - oder Umbenennungscode verarbeitet und dann zurück zur userInterface.php.
  • umleitet

Im folgenden Beispiel erlaube ich nicht das Löschen mehrerer Dateien, sondern nur die Auswahl mehrerer Dateien - daher die Schaltfläche "Auswählen" oben anstelle von "Auswahl löschen".

    
mseifert 03.12.2016 05:12
quelle

Tags und Links