Frage

Ich werde für Dateien Hosting, die Benutzer senden. Ich brauche ein paar Daten aus der Datei zu packen und sie dann in ein Verzeichnis verschieben.

Es zwei Punkte von Interesse für die gesamte Lebensdauer dieser Datei. Die erste ist, wenn die Daten werden abstrahiert und das zweite ist, wenn die Datei archiviert wird, so dass sie gemeinsam genutzt werden können.

Wenn Daten abstrahiert wird, habe ich gedacht, dass die Datei zu etwas Einmaliges oder fügen Sie eine eindeutige Zeichenfolge Umbenennung in Dateinamen, damit er nicht überschreiben anderen vorhandenen Dateien.

Wenn die Datei archiviert werden soll, habe ich gedacht, von drei Strategien. Eine davon ist, alle Dateien zu halten, von einem bestimmten Datum in einem Ordner hochgeladen. (2006 / September / 04, 2008 / Januar / 05) Das andere ist, einen Ordner zu halten und zu halten, bis einige maximale Anzahl von Dateien füllen ich in Ordner behalten möchten, und dann ein anderes erstellen (/ folder001 /, / folder002 /, / folder003 /, etc ..). Ein weiterer ist Unterordner zu erstellen, sobald sie eine gewisse Schwelle erreichen. So wie (/ j / jd / JDE / jdelator) Ich habe gesehen in Unix nicht sicher, wie dies zu erklären.

Die Fragen, die ich habe, ist, welche Art von Strategien euch nützlich gefunden haben oder gebraucht?

War es hilfreich?

Lösung

filename + millisec();:

Wenn Daten abstrahiert wird, würde ich so etwas wie wählen Es ist unwahrscheinlich, dass zwei Aufruf millisec wird das gleiche sein, und den Dateiname ist anwenderfreundlich beim Zugriff.

Das Datum Strategie kann bequem sein, wenn Sie sich entscheiden, alte und nicht mehr benötigte Dateien zu entfernen: Sie nur den 2006-Ordner bekommen müssen, und entfernen Sie alle, die nicht im letzten Jahr zugegriffen hat, entsprechend Ihr Protokoll. Dies kann auch ein guter Indikator für die Benutzer, da sie wissen, ob es eine neue Datei ist oder nicht. Die folderXYZ ist nur eine Variante dieser, mit einem Tag jeweils N Dateien ersetzt Datum.

Die Schwelle Unterordner können Sie die Anzahl der Einträge Ihrer Verzeichnisse gering zu halten, so dass der Zugriff ist schneller. Beachten Sie, dass diese Lösung manchmal benötigt, um Dateien zu verschieben (und dann einige url brechen, wenn nicht abgebildet), wenn ein bestimmtes Verzeichnis wächst.

Eine andere Möglichkeit ist es, eine DB zu verwenden, um mit UID Standort Dateinamen entspricht, und Zugriff auf die Datei durch http: / /server.com/UID/filename.txt . Auf diese Weise spart der Anwender die Datei als „filename.txt“, die für ihn bequem ist, und Sie wissen, mit der URL, wo die Datei (mit der DB UID Lage zu transformieren) zu finden. Beachten Sie, dass die UID kann eine Prüfsumme sein (MD5, SHA-1), um Duplikate der gleichen Datei zu behandeln.

Andere Tipps

ich mit guid in einer Datenbank stimmen würde und dann die Content-Disposition-Header verwenden, um es auf die ursprünglichen Dateinamen Namen zurück, wenn nötig. Eine Sache, die ich befürworten würde, ist, dass die Ordner, die Sie außerhalb des Web-Root gespeichert verwenden; Sie nicht möchten, dass Benutzer Dateien in Ihre Anwendung Ordner hochladen.

Ich habe eine relationale Datenbank verwendet, die die ID-Tags (int) zu UUID, die den Namen der Dateien sind. Auf diese Weise ist es egal, wie sie auf der Festplatte sind. Es hilft mir, die Dateien zu verschleiern. Außerdem kann ich dann JOIN Gebrauch „umbenennen“, um die Datei beliebig. Außerdem kann ich andere Datei „Namen“ verwenden. Es hängt alles von Ihrer Anwendung und wo es ausgeführt wird.

Obwohl es hängt von Ihrer Anwendung und usw., würde ich Dateirepository Schema halte sehr einfach für jetzt vorschlagen, und entscheiden über aufwändigere Strategie später. Mit anderen Worten, machen Sie Art „verwaltet Chaos“ für eine Weile; Struktur und Strategie wird später kommen, wenn Sie alle Anforderungen und Domain-Spezifika herausfinden werden. Indem Sie einfach, können Sie alles leicht ändern.

Wie auch immer, Veränderung unvermeidlich ist, das Beste, was Sie jetzt tun können, ist wählen einige Strategie und alles zu dokumentieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top