2016-07-14 12 views
-3

Ich erstelle ein JS/Node-Programm, mit dem Benutzer an einem öffentlichen Kiosk ein Bild in einem öffentlichen AWS S3 bucket speichern können. Sie geben dann ihre eigene E-Mail-Adresse ein und wir senden ihnen eine E-Mail mit einem Link zu diesem Bild, damit sie sie nach ihrer Rückkehr abrufen können.Wie kann ich mit JS einen nicht erratenen zufälligen Dateinamen in einem öffentlichen Verzeichnis erstellen?

Der gesamte S3-Bucket muss öffentlich sein, damit Benutzer ihr eigenes individuelles Image problemlos anzeigen können. Allerdings möchte ich es unwahrscheinlich machen, dass Besucher den Dateinamen eines anderen Bildes erraten können, indem sie das Bild einer anderen Person betrachten. Dies ist eher ein Licht Datenschutz Sorge als ein Sicherheitsrisiko.

Wie kann ich JS verwenden, um den alphanumerischen Dateinamen nach dem Zufallsprinzip zu generieren? Wie lang sollte der Dateiname sein?

+2

Sie könnten einen globalen eindeutigen Identifizierer als Teil des Dateinamens verwenden. Sucht danach hier auf SO. Es gibt mehrere Antworten mit kleinen und längeren Skripts, um eine GUID zu erstellen, jede mit Vor- und Nachteilen. – Shilly

+0

Danke dafür. GUID war genau das, was ich suchte. Ich kannte diesen Begriff nicht und jetzt, da ich ihn kenne, sehe ich eine Menge nützlicher Antworten. Bringt mich dazu, mich zu fragen, ob ich die Frage löschen oder es als Verweis auf diesen Suchbegriff für andere ignorante Leute wie mich verlassen sollte ... –

Antwort

0

denke ich Math.random eine gute Wahl sein würde:

function getRandomName() { 
 
    return parseInt((Math.random() * 10000000000000000000)).toString(36) 
 
} 
 

 
console.log(getRandomName()); 
 
console.log(getRandomName()); 
 
console.log(getRandomName());

3

1) Sie wirklich nicht diese mit Dateinamen tun sollten. Es wäre besser, wenn Sie eine vorzeichenbehaftete URL für das Objekt in S3 generieren, die innerhalb von ein paar Tagen abläuft und diese an ihre E-Mail sendet. Auf diese Weise wird die Datei für sie wirklich privat und Sie müssen den Bucket nicht veröffentlichen.

finden Sie in der Dokumentation hier: http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

2) Das heißt, wenn Sie wirklich die traditionelle Art und Weise nur eine lange zufällige Zeichenfolge generiert werden soll, dies zu tun, mit einem UUID. Sie können dies in Knoten mit dem node-uuid Paket tun. Beispielsweise wird require('node-uuid').v4(); eine zufällige UUID generieren.