/ / Змінити URL-адресу зображення для зберігання при подачі infirebase з кутовий / angularfire - angularjs, firebase, firebase-database, anglefire, firebase-storage

Зміна URL-адреси сховища зображення при передачі infirebase за допомогою кутових / кутових вогнів - angularjs, firebase, firebase-database, anglefire, firebase-storage

Нарешті, я встиг завантажити функцію зберігання даних, яка чудово працює в моєму накопичувачі, що працює з Angular і AngularFire. Я починаю розробляти з Angular.

для цього я використовую цю форму:

<form ng-submit="uploadFile(file)">
<input type="file" accept="txt" file-model="file" class="form-control">
<button type="submit" class="btn btn-primary">Upload File</button>

і що js:

app.controller("myController", ["$scope","$firebaseStorage",function($scope,     $firebaseStorage) {

// Create a Firebase Storage reference
var storage = firebase.storage();
var storageRef = storage.ref();
var filesRef = storageRef.child("files");

$scope.uploadFile = function(file) {
console.log("Let"s upload a file!");
console.log($scope.file);
var storageRef = firebase.storage().ref().child(file.name).put(file);
storageRef.on("state_changed", function(snapshot) {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;

}, function() {
//handle error
}, function() {
//url of storage file
var downloadURL = storageRef .snapshot.downloadURL;
console.log(downloadURL);

});
};

}]);

Я додала

console.log(downloadURL);

в моєму "DownloadUrl Var", і я бачу, що URL-адреса завантажувального файлу відображається в консолі.

Однак я також хочу, щоб URL-адресу також оновлювали в базі даних.

Приклад:

Я додаю під моєю формою вхід, де шлях до файлу зберігання віддаляється від бази даних (це добре працює):

<form ng-submit="uploadFile(file)">
<input type="file" accept="txt" file-model="file" class="form-control">
<button type="submit" class="btn btn-primary">Upload File</button>
<input ng-model="group.imageDetails" ng-change="groups.$save(group)" />

це випливає з цього:

    app.controller("VideosCtrl", function($scope, $firebaseObject) {
var ref = firebase.database().ref().child("posts");

$scope.groups = $firebaseObject(ref);

// download the data into a local object
var syncObject = $firebaseObject(ref);
// synchronize the object with a three-way data binding
// click on `index.html` above to see it used in the DOM!
syncObject.$bindTo($scope, "data");
});

Що таке ідентичність, коли я відправляю файл для завантаження, щоб оновити введення нижче моєї форми з URL-адресою завантаження нового завантаженого файлу.

Як це можна досягти?

Велике спасибі за вашу допомогу всім!

--- РЕДАГУВАТИ:

Добре, використовуючи код нижче:

app.controller("myController", ["$scope","$firebaseStorage",function($scope,     $firebaseStorage) {

// Create a Firebase Storage reference
var storage = firebase.storage();
var firebaseRef = firebase.database().ref().child("posts")
var storageRef = storage.ref();
var filesRef = storageRef.child("files");

$scope.uploadFile = function(file) {
console.log("Let"s upload a file!");
console.log($scope.file);
var storageRef = firebase.storage().ref().child(file.name).put(file);
storageRef.on("state_changed", function(snapshot) {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;

}, function() {
//handle error
}, function() {
//url of storage file
var downloadURL = storageRef .snapshot.downloadURL;
firebaseRef.update({"test":downloadURL})

console.log(downloadURL);

});
};

}]);

це створює його, але в неправильній таблиці моєї бази даних:

    --mydomain
----posts
--------POST LIST1
------------author
------------imageDetails ( THIS is where it should update the url)
--------CURRENT URL ( This is wehre it is save at the moment)
----users
--------name
--------email
--------id

тому я намагався замінити

firebaseRef.update({"test":downloadURL})

по

firebaseRef.update().ref().child("posts").child({"test":downloadURL});

але не пощастило ... чи має хтось рішення?

Дякую @

Відповіді:

0 для відповіді № 1
app.controller("myController", ["$scope","$firebaseStorage",function($scope,     $firebaseStorage) {

// Create a Firebase Storage reference
var storage = firebase.storage();
var firebaseRef = firebase.database().ref().child("posts")
var storageRef = storage.ref();
var filesRef = storageRef.child("files");

$scope.uploadFile = function(file) {
console.log("Let"s upload a file!");
console.log($scope.file);
var storageRef = firebase.storage().ref().child(file.name).put(file);
storageRef.on("state_changed", function(snapshot) {
var progress = (snapshot.bytesTransferred / snapshot.totalBytes) * 100;

}, function() {
//handle error
}, function() {
//url of storage file
var downloadURL = storageRef .snapshot.downloadURL;
// $scope.group.imageDetails = downloadURL;
firebaseRef.update({"url":downloadURL})
console.log(downloadURL);

});
};

}]);

Він буде завантажувати URL-адресу в базу даних пости

app.controller("VideosCtrl", function($scope, $firebaseObject) {
var ref = firebase.database().ref().child("posts");

ref.on("value",function(snapshot){
console.log(snapshot.val().url);
$scope.groups = snapshot.val().url;
});
});

HTML:

 <form ng-submit="uploadFile(file)">
<input type="file" accept="txt" file-model="file" class="form-control">
<button type="submit" class="btn btn-primary">Upload File</button>
<input ng-model="groups"/>