/ / Zmień adres URL obrazu na przesyłanie infirebase za pomocą angular / angularfire - angularjs, firebase, firebase-database, angularfire, firebase-storage

Zmień adres URL obrazu na przesyłanie infirebase za pomocą angular / angularfire - angularjs, firebase, firebase-database, angularfire, firebase-storage

W końcu udało mi się w pełni sprawić, że funkcja przesyłania do pamięci masowej działa idealnie w mojej bazie danych firewall z systemem Angular i Angularfire. Rozpoczęcie pracy z Angular.

do tego używam tego formularza:

<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>

i że 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);

});
};

}]);

Dodałem

console.log(downloadURL);

w moim DownloadUrl Var, i widzę, że adres URL fie, który ładuje się, wyświetla się dobrze w konsoli.

Jednak chciałbym, aby adres URL był aktualizowany również w bazie danych.

Przykład:

Dodam poniżej mojej postaci dane wejściowe, z których ścieżka pliku jest wyświetlana z bazy danych (działa poprawnie):

<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)" />

to jest pobieranie z tego:

    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");
});

Jak ma wyglądać identyfikator, kiedy przesyłasz plik do przesłania, aby zaktualizować dane wejściowe pod moim formularzem z adresem pobierania nowego właśnie przesłanego pliku.

Jak można to osiągnąć?

Wielkie dzięki za pomoc!

--- EDYTOWAĆ:

OK z poniższym kodem:

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);

});
};

}]);

tworzy go, ale w niewłaściwej tabeli mojej bazy danych:

    --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

więc próbowałem wymienić

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

przez

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

ale bez powodzenia ... czy ktoś ma rozwiązanie?

Dzięki @

Odpowiedzi:

0 dla odpowiedzi № 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);

});
};

}]);

Przekaże URL w bazie danych posty

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"/>