Firebase Storage วิธีการจัดเก็บและดึงภาพ [ปิด]


268

วิธีการจัดเก็บและดูภาพบน firebase?


1
นี่คือเย็นถ้าผมเก็บภาพโดยใช้ Firebase ฉันสามารถใช้การเข้าสู่ระบบการรักษาความปลอดภัยสำหรับ Firebase
mrwaim

6
เมื่อวานนี้ Firebase ได้เปิดตัวคุณลักษณะใหม่ที่เรียกว่า Firebase Storage (firebase.google.com/docs/storage) ซึ่งช่วยให้คุณสามารถอัปโหลดและดาวน์โหลดไฟล์โดยพลการ (รูปภาพวิดีโอเสียงและอื่น ๆ ) มันได้รับการสนับสนุนโดย Google Cloud Storage (cloud.google.com/storage) สำหรับขนาดเพตาไบต์และราคาที่แข่งขันได้ คุณควรตรวจสอบเรื่องนี้อย่างแน่นอน :)
Mike McDonald

16
ผู้ใช้พบว่ามีประโยชน์ทำไมต้องปิดมัน
Amr Lotfy

7
@TinyGiant นี่ไม่ได้ขอคำแนะนำดังนั้นทำไมมันจึงถูกปิดเช่นนี้? มันถูกถามเกี่ยวกับคุณสมบัติของบริการซอฟต์แวร์ - สมบูรณ์ในหัวข้อ

2
ฉันเกลียดความคิดเห็นที่ปิดไว้ก่อนวัยอันควร ไม่ควรปิดคำถามตรงไปตรงมาสำหรับความรักของพระเจ้า!
Jeryl Cook

คำตอบ:


277

ปรับปรุง (20160519) : Firebase เพียงแค่เปิดตัวคุณสมบัติใหม่ที่เรียกว่าFirebase การจัดเก็บข้อมูล สิ่งนี้อนุญาตให้คุณอัพโหลดรูปภาพและข้อมูลอื่น ๆ ที่ไม่ใช่ JSON ไปยังบริการจัดเก็บข้อมูลเฉพาะ เราขอแนะนำให้คุณใช้สิ่งนี้ในการจัดเก็บภาพแทนการจัดเก็บเป็นข้อมูลที่เข้ารหัส base64 ในฐานข้อมูล JSON

แน่นอนคุณสามารถ! ขึ้นอยู่กับว่าภาพของคุณใหญ่แค่ไหนคุณมีตัวเลือกสองสามอย่าง:

1. สำหรับภาพขนาดเล็ก (ต่ำกว่า 10mb)

เรามีตัวอย่างโครงการที่ทำได้ที่นี่: https://github.com/firebase/firepano

วิธีการทั่วไปคือการโหลดไฟล์ในเครื่อง (โดยใช้ FileReader) เพื่อให้คุณสามารถเก็บไว้ใน Firebase ได้เช่นเดียวกับข้อมูลอื่น ๆ เนื่องจากรูปภาพเป็นไฟล์ไบนารีคุณจะต้องการรับเนื้อหาที่เข้ารหัสแบบ 64 เพื่อให้คุณสามารถจัดเก็บเป็นสตริงได้ หรือสะดวกยิ่งขึ้นคุณสามารถจัดเก็บเป็นdata: urlซึ่งพร้อมที่จะเสียบเข้ากับ src ของแท็ก img (นี่คือตัวอย่าง)

2. สำหรับภาพขนาดใหญ่

Firebase มีขีด จำกัด 10mb (จากข้อมูลสตริงที่เข้ารหัส utf8) หากภาพของคุณใหญ่กว่าคุณจะต้องแยกเป็น 10mb คุณคิดถูกแล้วว่า Firebase นั้นได้รับการปรับให้เหมาะสมกับสตริงเล็ก ๆ ที่เปลี่ยนบ่อยมากกว่าสตริงหลายเมกะไบต์ หากคุณมีข้อมูลสแตติกขนาดใหญ่จำนวนมากฉันขอแนะนำ S3 หรือ CDN แทน


2
ที่น่ากลัว. คุณเคยเจอข้อ จำกัด ขนาดไฟล์บ้างไหม? ฉันไม่คิดว่า Firebase ได้ทำกับสตริงหลายเมกะไบต์ในใจ ...
MasterScrat

8
Firebase มีขีด จำกัด 10mb (จากข้อมูลสตริงที่เข้ารหัส utf8) หากภาพของคุณใหญ่กว่าคุณจะต้องแบ่งให้เป็น 10mb ชิ้น คุณคิดถูกแล้วว่า Firebase นั้นได้รับการปรับให้เหมาะสมกับสตริงขนาดเล็กที่เปลี่ยนบ่อยมากกว่าสตริงหลายเมกะไบต์ หากคุณมีข้อมูลคงที่จำนวนมากฉันขอแนะนำ S3 หรือ CDN แทน
Michael Lehenbauer

14
Firebase ต้องการเพิ่มพื้นที่เก็บข้อมูลขนาดใหญ่ในระบบโฮสติ้งของตนหรืออินสแตนซ์ s3 ที่มี apis อยู่ในไลบรารี
The_Brink

9
@The_Brink ขอบคุณสำหรับความคิดเห็น นี่คือเรดาร์ของเราแน่นอน!
Michael Lehenbauer

4
@ezain ถูกต้อง ฉันอาจจะไม่แนะนำวิธีนี้สำหรับเว็บไซต์ที่ใช้งานจริงขนาดใหญ่ (คุณต้องการบริการภาพที่สำรองไว้โดย CDN) แต่มันง่ายและ "ดีพอ" สำหรับการใช้งานจำนวนมาก
Michael Lehenbauer

25

ใช่คุณสามารถจัดเก็บและดูภาพใน Firebase คุณสามารถใช้ filepicker เพื่อรับไฟล์รูปภาพ จากนั้นคุณสามารถโฮสต์ภาพได้ตามที่คุณต้องการฉันชอบ Amazon s3 เมื่อรูปภาพถูกโฮสต์คุณสามารถแสดงรูปภาพโดยใช้ URL ที่สร้างขึ้นสำหรับรูปภาพ

หวังว่านี่จะช่วยได้


3
ตรวจสอบการปรับปรุงเอกสาร firbase สำหรับการนี้: firebase.google.com/docs/storage/#key_functions
Lukas Liesis

หากคุณกำลังจะโฮสต์ภาพใน amazon ทำไมไม่บันทึกไว้ในFirebase Storageแทน?
Ojonugwa Jude Ochalifu

19

ฉันสิ้นสุดการจัดเก็บภาพในรูปแบบ base64 ด้วยตัวเอง ฉันแปลพวกมันจากค่า base64 เมื่อถูกเรียกกลับจาก firebase


1
ปัญหาเดียวของวิธีนี้คือเมื่อภาพมีขนาดใหญ่การเคลื่อนไหวข้ามกิจกรรมทำให้แอปพลิเคชันช้าลงและในบางกรณีระบบขัดข้อง
Ojonugwa Jude Ochalifu

10

นอกจากนี้คุณยังสามารถใช้บริการที่เรียกว่าFilepickerซึ่งจะเก็บภาพของคุณไปยังเซิร์ฟเวอร์และFilepickerซึ่งตอนนี้เรียกว่า Filestack จะช่วยให้คุณมี URL ไปยังภาพ คุณสามารถเก็บ url ไปยัง Firebase ได้


ฉันเห็นบริการนี้จากความคิดเห็นของคุณฉันพยายาม แต่ไม่พอใจกับมันมาก
bpolat

3

มีสองวิธีในการทำครั้งแรกที่ฉันทำวิธีที่ Grendal2501 ทำได้ ฉันทำมันคล้ายกับ user15163 คุณสามารถจัดเก็บ URL รูปภาพใน firebase และโฮสต์รูปภาพบนโฮสต์ firebase ของคุณหรือ Amazon S3


ข้อผิดพลาด 403 พยายามแทรกและแสดงภาพ - มีปัญหาสิทธิ์อนุญาตเมื่ออัปโหลดภาพ - ข้อมูลใด ๆ เกี่ยวกับวิธีการตั้งค่าการอัปโหลด ฉันพยายามใช้ acl: 'สาธารณะอ่าน' - แต่แล้วการอัปโหลดล้มเหลวด้วย 403 เอกสารนโยบายข้อมูลและนโยบายถังข้อมูลที่สามารถช่วยได้จะดีมาก AWS - เอกสารประกอบเป็นเรื่องยากและไม่มีข้อมูลการดีบักที่มีข้อผิดพลาดอื่น ๆ จากนั้นปฏิเสธการเข้าถึง
jamie

2
ถามคำถามนี้อีกคำถามหนึ่ง
จาคอบฮาร์ทแมน

ความคิดที่เป็นธรรม :) เสร็จแล้ว - แม้ว่าสแต็คอาจแตกต่างกัน - หากมีสิ่งกระตุ้นใด ๆ ที่คุณสามารถให้ฉันได้ - ยินดีต้อนรับ การดีบักข้อผิดพลาดของ AWS S3 น่าผิดหวังอย่างน้อยที่สุด stackoverflow.com/questions/31998827/…
jamie

2

การใช้สตริง Base64 ใน JSON จะหนักมาก เครื่องมือแยกวิเคราะห์ต้องทำการยกของหนักมาก ปัจจุบัน Fresco รองรับเฉพาะฐานรองรับ Base64 เท่านั้น ดีกว่าที่คุณใส่อะไรลงบน Amazon Cloud หรือ Firebase Cloud และรับภาพเป็น URL เพื่อให้คุณสามารถใช้ Picasso หรือ Glide เพื่อทำการแคช

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.