Нарешті, я встиг завантажити функцію зберігання даних, яка чудово працює в моєму накопичувачі, що працює з 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 для відповіді № 1app.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"/>