Jak przesyłać dokumenty w czacie Firebase

Budowa aplikacji czatowej dla zespołu sprzedaży wymaga czegoś więcej niż tylko tekstu i obrazów. Operatorzy często muszą udostępniać pliki PDF, dokumenty Word i arkusze Excel.

Dodałem obsługę dokumentów do systemu czatu Firebase przy użyciu Cloudinary. Oto szczegółowy opis techniczny.

Konfiguracja techniczna

Zastosowałem ten sam wzorzec dla dokumentów, co w przypadku wiadomości głosowych.

  • Prześlij plik do Cloudinary.
  • Zapisz URL w Firebase Realtime Database.
  • Wyrenderuj niestandardową dymkę po stronie klienta.

Triki z Cloudinary

Cloudinary obsługuje multimedia inaczej niż pliki binarne. Jeśli spróbujesz przesłać plik PDF jako obraz, przesyłanie zakończy się niepowodzeniem.

Musisz użyć resource_type=raw w swoim adresie URL przesyłania.

Przykład kodu:

async function chatHandleDocFile(file) { const fd = new FormData(); fd.append('file', file); fd.append('upload_preset', 'Vocali');

const res = await fetch( https://api.cloudinary.com/v1_1/CLOUD_NAME/raw/upload, { method: 'POST', body: fd } ); const data = await res.json(); return data.secure_url; }

Struktura danych

Nie polegaj na tym, że Cloudinary zwróci Ci nazwy plików w późniejszym czasie. Trudno je wyodrębnić z adresu URL.

Zapisz te trzy rzeczy w Firebase podczas przesyłania:

  • docUrl
  • fileName
  • fileSize

Pozwala to na natychmiastowe wyrenderowanie dymki czatu bez dodatkowych żądań.

Interfejs użytkownika

Dymka dokumentu zawiera:

  • Półprzezroczyste niebieskie tło.
  • Ikonę na podstawie rozszerzenia pliku (np. 📄 dla PDF lub 📊 dla Excel).
  • Nazwę pliku i jego rozmiar.
  • Przycisk pobierania.

Na co warto uważać

  • Cloudinary Presets: Upewnij się, że Twój niepodpisany preset (unsigned preset) jest ustawiony na auto. Jeśli zostanie ustawiony tylko na audio, przesyłanie plików PDF zwróci błąd 400.
  • Błędy JavaScript: Podczas dodawania nowych gałęzi do zagnieżdżonych operatorów trójargumentowych, jeden dodatkowy nawias może zepsuć kod. Dokładnie sprawdzaj składnię.
  • Typy plików: System obsługuje teraz pliki PDF, DOCX, XLSX, PPTX, TXT, CSV, ZIP i RAR.

Wzorzec pozostaje prosty: przesyłanie do CDN, przechowywanie w Firebase i renderowanie po stronie klienta.

Źródło: https://dev.to/androve2k/uploading-pdf-word-and-excel-files-in-a-firebase-chat-cloudinary-resourcetyperaw-and-custom-142h