Como fazer upload de imagens para o Firebase a partir de um aplicativo React Native

Se você estiver criando um aplicativo móvel ou da Web, normalmente precisará de algum tipo de serviço de hospedagem para gerenciar os dados do aplicativo, carregar e gerenciar arquivos e, possivelmente, realizar autenticação social com terceiros como Google, Facebook e GitHub.

O Firebase é uma plataforma de hospedagem baseada em nuvem que permite fazer tudo isso e muito mais. O Firebase Storage é usado para fazer upload com segurança para seus aplicativos Firebase e baixá-los nos aplicativos.

Nesta postagem, você criará um aplicativo React Native com a capacidade de fazer upload de imagens para o Firebase Storage.

Se você ainda não tem uma conta do Firebase, pode criar uma na página inicial do Firebase. Depois que sua conta estiver configurada, acesse o console do Firebase e clique no botão Adicionar projeto botão para adicionar um novo projeto.

Insira os detalhes do seu projeto e clique no botão Criar Projeto botão quando terminar. Na próxima página, selecione a opção web (ou seja, o </> ícone). Isso vai levar você a Adicione o Firebase ao seu aplicativo da web página.

Forneça um apelido para seu aplicativo e clique em Registrar aplicativo. Na página seguinte, você receberá o comando de instalação do SDK do Firebase e os detalhes que precisa incluir no arquivo de configuração do seu aplicativo para conectá-lo ao Firebase.

Certifique-se de copiar toda essa configuração para um local acessível, pois você a usará mais tarde.

Isso é tudo para o Firebase. Vamos agora criar a interface do usuário para carregar a imagem do nosso aplicativo React Native.

Desenvolvendo o aplicativo React Native

Pré-requisitos

Para seguir este tutorial, você precisará de:

  • Pelo menos um entendimento básico de React Native
  • Configure Expo ou React Native CLI em sua máquina de desenvolvimento local
  • Se você estiver usando o React Native CLI, precisará ter o XCode ou o Android Studio instalado para executar o emulador.
  • Instale o firebase com npm install firebase.
Abra seu projeto React Native com o Visual Studio Code (ou outro IDE). Vá para dentro do /componentes pasta e crie um novo arquivo chamado UploadScreen.js.

Abra o arquivo e importe o seguinte:

1
  import React, {useState} from 'react'
2
    import {View, StyleSheet, Image, Text, TouchableOpacity, SafeAreaView, Alert} from 'react-native'
3
    import * as ImagePicker from 'expo-image-picker'
4
    import {firebase} from '../config' 

A seguir, crie um UploadScreen função de componente e retornar um vazio por agora. Exporte também a função na parte inferior do arquivo:

1
const UploadScreen = () => {
2
    return(
3
        <SafeAreaView>
4
          // view will go here

5
        </SafeAreaView>

6
    )
7
}
8
export default UploadScreen;

Logo acima do return declaração, crie o image e loading estado e configurá-los para null para false inicialmente:

1
   const [image, setImage] = useState(null)
2
   const [uploading, setUploading] = useState(false) 

Crie a função pickImage. Quando invocada, esta função inicia a biblioteca de imagens do seu dispositivo para que você possa escolher sua imagem. Depois que a imagem é recuperada, nós a armazenamos no estado chamando setImage:

1
    const pickImage = async () => {
2
        let result = await ImagePicker.launchImageLibraryAsync({
3
            mediaTypes: ImagePicker.MediaTypeOptions.All,
4
            allowsEditing: true,
5
            aspect: [4,3],
6
            quality: 1
7
        });
8
        const source = {uri: result.assets[0].uri}
9
        console.log(source)
10
        setImage(source)
11
    }; 

Depois de escolher uma imagem, temos que enviá-la para o Firebase. A função a seguir cuida disso quando invocada:

1
    const uploadImage = async () => {
2
        setUploading(true)
3
        const response = await fetch(image.uri)
4
        const blob = response.blob()
5
        const filename = image.uri.substring(image.uri.lastIndexOf('/')+1)
6
        var ref = firebase.storage().ref().child(filename).put(blob)
7
        try {
8
            await ref;
9
        } catch (e){
10
            console.log(e)
11
        }
12
        setUploading(false)
13
        Alert.alert(
14
            'Photo uploaded!'
15
        );
16
        setImage(null);
17
    } 

Com esse código, buscamos o endereço da imagem e recuperamos o nome do arquivo, que então carregamos no Firebase. Se for bem-sucedido, ativamos um alerta que diz “Foto carregada” e redefinimos o estado da imagem. No entanto, se um erro for encontrado, nós o registramos no console.

Em seguida, exibimos a exibição de nosso UploadScreen componente. Copie e cole o seguinte código dentro do return() declaração do UploadScreen função:

1
<SafeAreaView style={styles.container}>
2
  <TouchableOpacity style={styles.selectButton} onPress={pickImage}>
3
    <Text style={styles.btnText}>Pick an Image</Text>

4
  </TouchableOpacity>   

5
  <View style={styles.imageContainer}>
6
   {image && <Image source={{uri: image.uri}} style={{width: 300, height: 300}}/>}            

7
  <TouchableOpacity style={styles.uploadButton} onPress={uploadImage}>
8
      <Text style={styles.btnText}>Upload Image</Text>

9
  </TouchableOpacity>

10
  </View>            

11
</SafeAreaView>

No código acima definimos dois botões:

  • Um para escolher uma imagem (clicar neste botão invoca pickImage)
  • O outro para fazer upload da imagem para o Firebase (pressionar isso invoca uploadImage)

Salve as alterações do arquivo.

Finalmente, entre App.js e use o seguinte código:

1
import * as React from 'react';
2
import { View, StyleSheet } from 'react-native';
3
import UploadScreen from './components/UploadScreen';
4

5
export default function App() {
6
  return (
7
    <View style={styles.container}>
8
      <UploadScreen />
9
    </View>

10
  );
11
}
12

13
const styles = StyleSheet.create({
14
  container: {
15
    flex: 1
16
  }

Salve o arquivo e verifique seu dispositivo/emulador. Você deve encontrar a seguinte IU renderizada em seu dispositivo.

Visualização final do aplicativoVisualização final do aplicativoVisualização final do aplicativo
Visualização final do aplicativo

Clique no Escolha uma imagem botão, selecione uma imagem do seu dispositivo e clique Enviar Imagem para carregá-lo no Firebase.

Vá para o armazenamento do Firebase e confirme se a imagem foi carregada.

Imagem no FirebaseImagem no FirebaseImagem no Firebase
Imagem no Firebase

Como você pode ver acima, o meu foi carregado com sucesso.

Agora que você sabe como fazer upload de uma imagem, pode usar esse conhecimento para criar projetos ainda mais empolgantes com o React Native. Por exemplo, você pode listar seus produtos digitais ou várias opções de acesso premium (por exemplo, quantidade de moedas extras para um jogo) que pode ser desbloqueado por meio de compras no aplicativo.

Conclusão

Como desenvolvedor, o Firebase oferece muitos recursos, incluindo upload de arquivos com armazenamento. O upload de arquivos para o Firebase exige que você configure um aplicativo da Web no Firebase. Ao final desse processo, você obtém as configurações para conectar seu aplicativo React Native ao Firebase.

Espero que você tenha achado este artigo útil. Você também pode aprender como fazer upload de imagens para o Firebase a partir de um aplicativo Android.

[ad_2]

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *