2016-07-14 8 views
-3

Я создаю программу JS/Node, которая позволяет пользователям в общедоступном киоске сохранять изображение публике AWS S3 bucket. Затем они вводят свой собственный адрес электронной почты, и мы отправляем им электронное письмо со ссылкой на это изображение, чтобы они могли получить его, как только они вернутся домой.Как я могу создать JS для создания недопустимого случайного имени файла в общедоступном каталоге?

Все ведро S3 должно быть общедоступным, чтобы пользователи могли легко просматривать собственное изображение. Тем не менее, я хочу сделать маловероятным, чтобы посетители могли угадать имя другого изображения, просмотрев изображение другого человека. Это скорее light проблема конфиденциальности, чем проблема безопасности.

Как я могу использовать JS для случайного генерации буквенно-цифрового имени файла? Как долго должно быть имя файла?

+2

Вы можете использовать глобальный уникальный идентификатор как часть имени файла. Ищите вокруг это здесь, на SO. Существует несколько ответов с небольшими и более длинными сценариями для создания GUID, каждый из которых имеет плюсы и минусы. – Shilly

+0

Спасибо за это. GUID был именно тем, что я искал. Я не был знаком с этим термином, и теперь, когда я это знаю, я вижу массу полезных ответов. Заставляет меня задаться вопросом, следует ли мне удалить вопрос или оставить его ссылкой на этот поисковый запрос для других невежественных людей, таких как я ... –

ответ

0

Я думаю Math.random будет хорошим выбором:

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

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

3

1) Вы действительно не должны делать это с именами файлов. Вам лучше создать предварительно подписанный URL-адрес для объекта в S3, срок действия которого истекает, например, пару дней, и отправив , что на электронную почту. Таким образом, файл будет по-настоящему частным для них, и вам не нужно публиковать ведро.

Смотрите документацию здесь: http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html

2) Тем не менее, если вы на самом деле просто хотите создать длинную случайную строку, традиционный способ сделать это с UUID. Вы можете сделать это в узле с пакетом node-uuid. Например, require('node-uuid').v4(); генерирует случайный UUID.