Ich sende meine Datei über das Frontend an einen s3-Bucket, da das von dem, was ich gelesen habe, effizienter scheint.Wie legt man einen eindeutigen aws S3-Dateinamen fest?
Aber für einige mein schema/Sammlungen, ich werde nicht die ID hat, für die die Datei/Foto zugeordnet ist - wie sie zur gleichen Zeit wie der Upload erstellt werden:
$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 = {};
});
}
};
Des Der obige Code würde nicht funktionieren, es sei denn, ich habe ein Update über das Versprechen von aws.Upload gesendet, nachdem das Destillerieobjekt erstellt wurde und nachdem die Datei nach s3 hochgeladen wurde.
Das scheint nicht effizient.
Ich könnte eine GUID erstellen und diese dem Namen der s3-Datei zuweisen, und auch eine Referenz davon auf dem Distillery-Objekt behalten. Dies scheint jedoch hacky.
Beispiel Guid Schöpfer:
function guid() {
function s4() {
return Math.floor((1 + Math.random()) * 0x10000)
.toString(16)
.substring(1);
}
return s4() + s4() + '-' + s4() + '-' + s4() + '-' +
s4() + '-' + s4() + s4() + s4();
}
Was wäre die sauberste Weg zu erreichen, was ich will?
Möglicherweise möchten Sie schauen ein Paket wie fineuploader – dkarchmer