zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Einer Datei einen Wert zuordnen (Perl)

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 06.05.2013, 14:09
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard Einer Datei einen Wert zuordnen (Perl)

Hallo,
ich möchte gerne einer Datei einen Wert zuordnen. Dies ist normal ein Zahlenwert, der zum Beispiel für einen Benutzer stehen kann, der die Datei angelegt hat.

Ich verwende Perl.

Gibt es irgend einen besseren Weg, als eine separate Liste mit Dateien zu führen, oder das im Dateinamen abzulegen?

Habe hierzu leider nichts gefunden. NTFS bietet ja die Möglichkeit, zusätzliche Informationen abzulegen, aber das ganze soll wenn möglich Betriebssystemunabhängig sein.

Danke.

Geändert von MitjaStachowiak (06.05.2013 um 14:26 Uhr)
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 06.05.2013, 15:49
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Was meinst du mit: einer Datei einen Wert zuordnen?
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 06.05.2013, 15:58
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Also im Moment suche ich den praktikabelsten Weg, um etwas zu speichern, wie "Datei bild.jpg wurde von Benutzer admin1 hochgeladen". Wie gesagt: Wenn ich jeder Datei einfach einen einzigen Zahlenwert zuordnen könnte, so wie createtime, last modified, etc...

Andernfalls müsste ich halt eine Liste pflegen, die diese Infos speichert --> höherer Aufwand. Und wehe, jemand benennt über FTP eine Datei um
Also muss diese Liste auch noch regelmäßig gewartet werden.

Etwas einfacher würde es, wenn man nicht Namen und Speicherort der Datei, sondern eine eindeutige ID im Dateisystem, die sich nicht ändert, bis die Datei gelöscht wird, speicherte. Gibt es sowas?
Mit Zitat antworten
  #4 (permalink)  
Alt 06.05.2013, 16:07
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Also im Moment suche ich den praktikabelsten Weg, um etwas zu speichern, wie "Datei bild.jpg wurde von Benutzer admin1 hochgeladen".
Du sprichst also von einer Webanwendung, die über einen Browser genutzt wird?

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Andernfalls müsste ich halt eine Liste pflegen, die diese Infos speichert --> höherer Aufwand. Und wehe, jemand benennt über FTP eine Datei um
Also muss diese Liste auch noch regelmäßig gewartet werden.

Etwas einfacher würde es, wenn man nicht Namen und Speicherort der Datei, sondern eine eindeutige ID im Dateisystem, die sich nicht ändert, bis die Datei gelöscht wird, speicherte. Gibt es sowas?
So wie du es beschreibst, klingt das nach einer einfachen Dokumentenverwaltung. Dort werden diese Daten üblicherweise in einer Datenbank gespeichert.
Mit Zitat antworten
  #5 (permalink)  
Alt 06.05.2013, 16:30
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Im Prinzip ja. Ich möchte einen Dateibrowser im Backend meiner Seite anbieten.

Besagte Seite hat eine Besonderheit: Solange man nicht das Backend oder Funktionen, wie Kalender, etc. benutzt, kann die Seite auch komplett ohne Perl/PHP/Mysql oder ähnliches angezeigt werden. Das hat sich so ergeben, da es eine fast statische Website ist und dies hat durchaus Vorteile - Vorteile, die ich jetzt allein wegen dem Dateibrowser nicht aufgeben möchte. Deswegen gibt es für mich nur die Alternativen, einen Zahlenwert direkt an die Datei anzuhängen, oder eine Liste, die diese Werte mit den Dateinamen verknüpft anzulegen.

Aber ich habe so das Gefühl, dass eine Liste verdammt buggy wird, wenn da einmal was durcheinander kommt.

File::stat zum Beispiel gibt werte, wie gid oder uid zurück - aber ich nehme an, dass diese schon vom System verwendet werden und ich nicht einfach meine eigene Benutzer-ID da reinschreiben darf. Falls das überhaupt geht.
Aber was mach zum Beispiel inode?
Mit Zitat antworten
  #6 (permalink)  
Alt 06.05.2013, 21:47
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Das sind alles Systemanagaben, die für deine Zwecke nicht brauchbar sind (daher wäre die Info, dass wir über eine Webanwednung sprechen sinnvoll gewesen. Wenn du eine lokale Anwendung mit Perl schreibst, kannst du die Systemuser nutzen, aber auf einem Server wird das nicht gehen.).

Wie gesagt das was du beschreibst wird üblicherweise mit einer Datenbank gelöst und ist auch i.d.R. das sinnvollste. Wenn du Gründe hast es mit einem eigenen Datenbanksystem zu machen oder z.b. mit DB_File (also einer Berkley DB), dann kannst du das auch machen. Aber etwas in den Dateisystem abspeichern kannst du nicht. Schon gar nicht auf einem Server. Du könntest es natürlich auch so machen wie früher MacOs und zu jeder Datei eine unsichtbare Metadatei erzeugen.
Mit Zitat antworten
  #7 (permalink)  
Alt 06.05.2013, 23:51
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Meine Idee war eine zentrale Meta-Datei, aber ja...

Wie verhält es sich denn jetzt mit index node?, also
Code:
stat('test.txt')->ino
Auf dem Server (Linux) bekomme ich da irgend eine Zahl zurück - ist das so eine Art eindeutige ID einer Datei, die beim Umbenennen/Verschieben gleich bleibt?

Auf Windows ist das leider immer Null - gibt es hier eine Alternative?

Es geht im wesentlichen darum, dass nicht jeder Benutzer das Recht haben soll, Dateien zu löschen (o.ä.), aber wenigstens die selbst hochgeladenen wieder zu löschen - diese Möglichkeit sollte doch bestehen.

Speicherte man also eine Liste mit Datei-IDs + Benutzer-IDs, so könnte man gewährleisten, dass diese Möglichkeit meistens funktioniert, aber die Wahrscheinlichkeit, dass der Benutzer eine Datei löschen kann, für die er kein Recht hat, sehr niedrig ist. Dafür müsste man ja außerhalb vom Backend eine Datei löschen und eine neue mit gleicher ID anlegen... Der Vorteil, gegenüber der Variante mit kompletten Pfaden wäre einerseits die Geschwindigkeit und andererseits die Tatsache, dass man nicht beim Umbenennen und Verschieben von Dateien die Meta-Datei mit ändern müsste.

Hat jemand eine bessere Idee?
Mit Zitat antworten
  #8 (permalink)  
Alt 07.05.2013, 00:13
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Meine Idee war eine zentrale Meta-Datei, aber ja...
Nein, deine Idee klingt eher nach einer Textdatei, als Datenbankersatz.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Wie verhält es sich denn jetzt mit index node?, also
Code:
stat('test.txt')->ino
Auf dem Server (Linux) bekomme ich da irgend eine Zahl zurück - ist das so eine Art eindeutige ID einer Datei, die beim Umbenennen/Verschieben gleich bleibt?
Noch mal, du kannst nicht Systeminformationen manipulieren.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Auf Windows ist das leider immer Null - gibt es hier eine Alternative?
Windows hat ein völlig anderes Dateisystem und kennt viele Eigenschaften von stat nicht.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Es geht im wesentlichen darum, dass nicht jeder Benutzer das Recht haben soll, Dateien zu löschen (o.ä.), aber wenigstens die selbst hochgeladenen wieder zu löschen - diese Möglichkeit sollte doch bestehen.
Ich kann mich nur wiederholen, das was du beschreibst ist etwas völlig Alltägliches - wenn, was du immer noch nicht gesagt hast, wir von einer Webanwendung sprechen - und sowas benutzen viele Anwendungen. Aber niemand würde auf die Idee komen, irgendwelche Systemnahen Daten für sowas benutzen, bei einer Anwendung auf dem Rechner kannst du das User System von Linux benutzen, aber wie gesagt in einer Serverumgebung geht das nicht.

Du musst dir also einen solche Userverwaltung für deinen speziellen Fall selbst programmieren oder schaust ob es fertige Anwendungen gibt, die deinen Bedürfnissen nahe kommen.

Aber die Idee irgendetwas im Dateisystem zu speichern ist absurd.
Mit Zitat antworten
  #9 (permalink)  
Alt 07.05.2013, 09:51
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 09.10.2010
Beiträge: 154
MitjaStachowiak befindet sich auf einem aufstrebenden Ast
Standard

Also ich möchte keine Datenbank und ja, es handelt sich um ein CGI-Script.

In NTFS gibt es "erweiterte Attribute", hier könnte ich problemlos meine Werte speichern. Auf Linux funktioniert dafür diese index node - Dank der kann ich die Liste separat führen und muss nur beim erstellen und löschen der Datei den Eintrag ändern und nicht beim Verschieben/Umbenennen.

Fragt sich, ob man mit Perl auf erweiterte Attribute in NTFS zugreifen kann, bzw. anhand der index node prüfen kann, ob die Datei noch existiert. Denn irgendwie gewartet werden muss die Liste ja...

Es gibt natürlich fertige Scripts dafür - ich kenne da welche, die zum Beispiel einen speziellen Dateinamen vergeben. Also man lädt die Datei als "test.jpg" hoch, aber auf dem Server heißt sie dann "pi8P98fhpeN9aeOGh.jpg". Daraus kann das Backend dann rekunstruieren, wer die Datei hochgeladen hat und wie sie eigentlich heißt. Finde ich aber irgendwie unschön. Deswegen habe ich nach einer Alternative gefragt - es muss bei mir nicht immer 100%ig sicher sein und wenn nach einem Serverwechsel die Infos halt weg sind ist das auch nicht soo tragisch. Es gibt ja Administratoren, die immer Zugriff auf die Dateien haben. Die mit eingeschränktem Zugriff arbeiten erfahrungsgemäß immer nur kurzzeitig an einer Seite und das war's.

Im Moment sieht es so aus, als gäbe es keine Alternative zu einer separaten Liste, die alle URLs und Zusatzinfos enthällt und die bei jedem umbenennen mit geändert werden muss. Und das alles, wegen einem einzigen 32-Bit-Wert, der jeder Datei zugeordnet werden soll...

Geändert von MitjaStachowiak (07.05.2013 um 10:06 Uhr)
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 07.05.2013, 11:35
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.977
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Also ich möchte keine Datenbank und ja, es handelt sich um ein CGI-Script.
D.h. die Skripte werden ncith als Root ausgeführt.

Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
In NTFS gibt es "erweiterte Attribute", hier könnte ich problemlos meine Werte speichern. Auf Linux funktioniert dafür diese index node - Dank der kann ich die Liste separat führen und muss nur beim erstellen und löschen der Datei den Eintrag ändern und nicht beim Verschieben/Umbenennen.
Irgendwie werde ich aus deinen Ausführungen nicht ganz schlau. Erweiterte Attribute sind soweit ich das sehe, genau das was ich schon gesagt habe, Metainformationen die entweder in einer Extradatei oder in der Datei direkt gespeichert wurden. z.b. Tags in einer MP3 Datei.

Der inode ist eine Metainformation des Dateisystem unter Linux.

Wenn du Metainformationen brauchst, hast du 3 Möglichkeiten. Entweder du benutzt eine Datenbank - die du meiner Meinung hier sowieso brauchst - oder du schreibst die Daten direkt in die Datei, wodurch sie aber evtl. unrauchbar für andere Anwendungen wird oder du speicherst sie einer Extradatei. Etwas anderes gibt es nicht und wird auch nicht vom Betriebsystem gemacht.

Dein Wunsch ist es, die OS Informationen zu überschreiben, womit du das Dateisystem zerstören würdest, was wohl kaum dein Ziel sein kann.


Zitat:
Zitat von MitjaStachowiak Beitrag anzeigen
Es gibt natürlich fertige Scripts dafür - ich kenne da welche, die zum Beispiel einen speziellen Dateinamen vergeben. Also man lädt die Datei als "test.jpg" hoch, aber auf dem Server heißt sie dann "pi8P98fhpeN9aeOGh.jpg". Daraus kann das Backend dann rekunstruieren, wer die Datei hochgeladen hat und wie sie eigentlich heißt. Finde ich aber irgendwie unschön.
Wie gesagt, dass ist der übliche Weg, wenn wir von einer Webanwendung reden, vermutlich weil es die meisten so am schönsten finden. Wenn dir das nicht gefällt, musst du dir selbst was basteln.
Mit Zitat antworten
Sponsored Links
Antwort

Stichwörter
benutzer zuordnen, datei, informaionen, perl, verknüpfen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Software Developer - Good in Perl or willing to Learn? Booking.com Jobs 0 24.01.2013 17:49
Frage : Tempöräre Datei tichy Serveradministration und serverseitige Scripte 3 16.06.2009 13:52
html Befehle in einer txt Datei? Magellan (X)HTML 19 05.06.2008 19:39
Dateien auslagern - Include und PHP ArcVieh Serveradministration und serverseitige Scripte 17 27.03.2008 19:09
[php/http] datei an client senden Xenon Serveradministration und serverseitige Scripte 13 21.03.2005 21:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:58 Uhr.