Sur Flutter Web, je sélectionne un fichier image sur l'ordinateur et j'obtiens un objet Image File. Ensuite, je veux le télécharger sur Firebase Storage. Pour Android et iOS de l'application, j'utilisais une fonction Firebase Cloud et une requête http en plusieurs parties. Cela fonctionnait, mais pas pour la version Web de l'application. Donc,
Comment puis-je télécharger un fichier image html sur Firebase Storage, directement ou via une fonction cloud?
Voici l'extrait complet qui fonctionne pour moi pour le téléchargement de l'image: html.File
Ne fonctionne pas pour moi, le fichier est téléchargé mais vous verrez Error loading preview
Dans le stockage Firebase, donc il suffit de passer les octets directement travaille pour moi.
Pour afficher une image, vous pouvez utiliser mediaInfo.bytes
Avec un widget qui prend en charge les octets, par exemple FadeInImage
vous pouvez utiliser MemoryImage(mediaInfo.bytes)
et Image.memory(mediaInfo.bytes)
packages utilisés:
Future<MediaInfo> imagePicker() async {
MediaInfo mediaInfo = await ImagePickerWeb.getImageInfo;
return mediaInfo;
}
Future<Uri> uploadFile(
MediaInfo mediaInfo, String ref, String fileName) async {
try {
String mimeType = mime(Path.basename(mediaInfo.fileName));
// html.File mediaFile =
// new html.File(mediaInfo.data, mediaInfo.fileName, {'type': mimeType});
final String extension = extensionFromMime(mimeType);
var metadata = fb.UploadMetadata(
contentType: mimeType,
);
fb.StorageReference storageReference =
fb.storage().ref(ref).child(fileName + ".$extension");
fb.UploadTaskSnapshot uploadTaskSnapshot =
await storageReference.put(mediaInfo.data, metadata).future;
Uri imageUri = await uploadTaskSnapshot.ref.getDownloadURL();
print("download url $imageUri");
return imageUri;
} catch (e) {
print("File Upload Error $e");
return null;
}
}