J'explore actuellement Flutter, j'ai trouvé qu'il existe un plugin de stockage Firebase officiel dans Flutter firebase_storage J'ai une référence de stockage comme celle-ci:
final StorageReference ref = FirebaseStorage.instance.ref().child("default.png");
Mais il n'existe aucune méthode pour obtenir l'URL de téléchargement à partir de cette StorageReference.
Si la solution ci-dessus ne fonctionne pas, essayez ceci:
Future<String> uploadImage(var imageFile ) async {
StorageReference ref = storage.ref().child("/photo.jpg");
StorageUploadTask uploadTask = ref.putFile(imageFile);
var dowurl = await (await uploadTask.onComplete).ref.getDownloadURL();
url = dowurl.toString();
return url;
}
J'avais implémenté une méthode pour enregistrer votre image avec un horodatage et obtenir l'url téléchargeable.
Future<String>photoOption() async {
try {
DateTime now = new DateTime.now();
var datestamp = new DateFormat("yyyyMMdd'T'HHmmss");
String currentdate = datestamp.format(now);
File imageFile = await ImagePicker.pickImage();
StorageReference ref = FirebaseStorage.instance
.ref()
.child("images")
.child("$currentdate.jpg");
StorageUploadTask uploadTask = ref.putFile(imageFile);
Uri downloadUrl = (await uploadTask.future).downloadUrl;
addUser.downloadablelink = downloadUrl.toString();
downloadableUrl = downloadUrl.toString();
print(downloadableUrl);
} catch (error) {
print(error);
}
return downloadableUrl;
}
utilisez l'url comme ceci:
printUrl() async {
StorageReference ref =
FirebaseStorage.instance.ref().child("images/sky.jpg");
String url = (await ref.getDownloadURL()).toString();
print(url);
}
Il est ma solution:
StorageReference storageReference = FirebaseStorage.instance.ref().child("myfile");
StorageUploadTask uploadTask = storageReference.putFile(file);
uploadTask.onComplete.then((s){
s.ref.getDownloadURL();
});
Future<String> urlDownload(file) async {
var uuid = Uuid().v1();
StorageReference ref =
FirebaseStorage.instance.ref().child("post_$uuid.jpg");
StorageUploadTask uploadTask = ref.putFile(file);
String downloadUrl =
await (await uploadTask.onComplete).ref.getDownloadURL();
return downloadUrl;}
Voici ma solution
cette partie est la façon dont je reçois l'image du sélecteur
Future getImage() async {
var image = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {
_image = image;
print('Image Path $_image');
});
}
que je le télécharge
Future uploadPic(BuildContext context) async {
String fileName = basename(_image.path);
StorageReference firebaseStorageRef = FirebaseStorage.instance.ref().child(fileName);
StorageUploadTask uploadTask = firebaseStorageRef.putFile(_image);
StorageTaskSnapshot taskSnapshot = await uploadTask.onComplete;
final String url = (await taskSnapshot.ref.getDownloadURL());
print('URL Is $url');
}
j'espère que ça va aider quelqu'un
Ma solution
Future mainprofile(File image) async {
try {
DateTime now = new DateTime.now();
var datestamp = new DateFormat("yyyyMMdd'T'HHmmss");
String currentdate = datestamp.format(now);
_firebaseStorageRef = FirebaseStorage.instance
.ref()
.child(userRepository.uid)
.child('main')
.child("$currentdate.jpg");
StorageUploadTask uploadTask = _firebaseStorageRef.putFile(image);
uploadTask.onComplete.then((onValue) async {
_mainurl = (await _firebaseStorageRef.getDownloadURL()).toString();
});
} catch (error) {
print(error);
}
}