2016-05-12 4 views
1

Я отправляю свой файл в ведро s3 через передний конец, поскольку это кажется более эффективным из того, что я читал.Как установить уникальное имя файла aws S3?

Но для некоторых из моих коллекций/схем, я не буду иметь идентификатора, для которого файл/фото связанно - как они создаются в то же время, как загрузки:

$scope.add = function(){ 

    if($scope.file.photo){ 
     $scope.distiller.photo = 'http://s3.amazonaws.com/whiskey-upload/distillers/' 
     + ' needs to be assigned to guid or collection id' 
     Distillery.create($scope.distiller).then(function(res){ 
      console.log(res); 
      $scope.distillers.push(res.data.distiller); 
     var files = $scope.file; 
     var filename = files.photo.$ngfName; 
     var type = files.type; 
     var folder = 'distillers/'; 

     var query = { 
      files: files, 
      folder: folder, 
      filename: res.data.distiller._id, 
      type: type 
     }; 

     Uploads.awsUpload(query).then(function(){ 
      $scope.distiller = {}; 
      $scope.file = {}; 
     }); 
    }); 
    } 
    else{ 
    Distillery.create($scope.distiller).then(function(res){ 
     toastr.success('distillery created without photo'); 
     $scope.distiller = {}; 
    }); 
    } 
    }; 

выше код не будет работать, если я не отправил обновление на aws.Upload после создания объекта ликеро-водочного завода и после того, как файл был загружен на s3.

Это не кажется эффективным.

Я мог бы создать руководство и назначить его имени файла s3, а также сохранить ссылку на объект на ликероводочном заводе. Однако это кажется взломанным.

пример Guid создатель:

function guid() { 
    function s4() { 
    return Math.floor((1 + Math.random()) * 0x10000) 
     .toString(16) 
     .substring(1); 
    } 
    return s4() + s4() + '-' + s4() + '-' + s4() + '-' + 
    s4() + '-' + s4() + s4() + s4(); 
} 

Что бы чистый способ добиться того, чего я хочу?

+0

Вы можете посмотреть в использовании пакет как fineuploader – dkarchmer

ответ

2

Хороший генератор GUID - это очень стандартный способ решения уникальной проблемы с идентификатором. В зависимости от алгоритма вероятность столкновения имен может быть близка к нулю. Как вы знаете, JavaScript не имеет родной, поэтому такой, как ваш, является разумным. Я не думаю, что это хаки.

Вот еще по @briguy37:

function generateUUID() { 
    var d = new Date().getTime(); 
    var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { 
     var r = (d + Math.random()*16)%16 | 0; 
     d = Math.floor(d/16); 
     return (c=='x' ? r : (r&0x3|0x8)).toString(16); 
    }); 
    return uuid; }; 
+0

как близко к нулю это будет? скажем, у меня было приложение вроде instagram? – NoobSter

+0

«Предполагая единообразную вероятность для простоты, вероятность того, что один дубликат составит около 50%, если каждый человек на земле с 2014 года будет иметь 600 миллионов идентификаторов GUID». Не уверен, что я понимаю эту вероятность, но она кажется низкой. См. En.wikipedia.org/wiki/Globally_unique_identifier для получения дополнительной информации. –

Смежные вопросы