Lưu trữ Firebase Cách lưu trữ và Lấy hình ảnh [đã đóng]


268

Làm thế nào để lưu trữ và xem hình ảnh trên firebase?


1
Điều này thật tuyệt, nếu tôi lưu trữ hình ảnh bằng firebase, tôi có thể sử dụng thông tin đăng nhập firebase để bảo mật
mrwaim

6
Kể từ hôm qua, Firebase đã phát hành một tính năng mới, được gọi là Firebase Storage (firebase.google.com/docs/st Storage), cho phép bạn tải lên và tải xuống các tệp tùy ý (hình ảnh, video, âm thanh, v.v.). Nó được hỗ trợ bởi Google Cloud Storage (cloud.google.com/st Storage) cho quy mô petabyte và giá cả cạnh tranh. Bạn chắc chắn nên kiểm tra điều này :)
Mike McDonald

16
Người dùng thấy nó hữu ích, tại sao lại đóng nó?
Amr Lotfy

7
@TinyGiant Đây không phải là yêu cầu đề xuất, vậy tại sao nó lại bị đóng như vậy? Đó là hỏi về một tính năng của dịch vụ phần mềm - hoàn toàn về chủ đề.

2
tôi ghét bình luận đóng cửa sớm. những câu hỏi thẳng thắn không nên khép lại vì tình yêu của chúa!
Jeryl Cook

Câu trả lời:


277

Cập nhật (20160519) : Firebase vừa phát hành một tính năng mới có tên Firebase Storage . Điều này cho phép bạn tải lên hình ảnh và dữ liệu phi JSON khác lên một dịch vụ lưu trữ chuyên dụng. Chúng tôi khuyên bạn nên sử dụng điều này để lưu trữ hình ảnh, thay vì lưu trữ chúng dưới dạng dữ liệu được mã hóa base64 trong cơ sở dữ liệu JSON.

Bạn chắc chắn có thể! Tùy thuộc vào hình ảnh của bạn lớn như thế nào, bạn có một vài lựa chọn:

1. Đối với hình ảnh nhỏ hơn (dưới 10mb)

Chúng tôi có một dự án ví dụ thực hiện điều đó tại đây: https://github.com/firebase/firepano

Cách tiếp cận chung là tải tệp cục bộ (sử dụng FileReader) để sau đó bạn có thể lưu trữ tệp đó trong Firebase giống như bất kỳ dữ liệu nào khác. Vì hình ảnh là tệp nhị phân, bạn sẽ muốn lấy nội dung được mã hóa base64 để bạn có thể lưu trữ dưới dạng chuỗi. Hoặc thậm chí thuận tiện hơn, bạn có thể lưu trữ dưới dạng dữ liệu: url sau đó sẵn sàng đăng nhập dưới dạng src của thẻ img (đây là ví dụ như vậy)!

2. Đối với hình ảnh lớn hơn

Firebase có giới hạn 10mb (dữ liệu chuỗi được mã hóa utf8). Nếu hình ảnh của bạn lớn hơn, bạn sẽ phải chia nó thành 10mb. Bạn đã đúng mặc dù Firebase được tối ưu hóa nhiều hơn cho các chuỗi nhỏ thay đổi thường xuyên thay vì các chuỗi nhiều megabyte. Nếu bạn có nhiều dữ liệu tĩnh lớn, chắc chắn tôi muốn giới thiệu S3 hoặc CDN.


2
Thật tuyệt vời. Bạn đã bao giờ chạy vào một số giới hạn kích thước tập tin? Tôi không nghĩ Firebase được tạo ra với các chuỗi nhiều megabyte ...
MasterScrat

8
Firebase có giới hạn 10mb (dữ liệu chuỗi được mã hóa utf8). Nếu hình ảnh của bạn lớn hơn, bạn sẽ phải chia nó thành 10mb. Bạn đã đúng mặc dù Firebase được tối ưu hóa nhiều hơn cho các chuỗi nhỏ thay đổi thường xuyên thay vì các chuỗi nhiều megabyte. Nếu bạn có nhiều dữ liệu tĩnh lớn, chắc chắn tôi muốn giới thiệu S3 hoặc CDN.
Michael Lehenbauer

14
Firebase thực sự cần thêm dung lượng lưu trữ lớn hơn vào hệ thống lưu trữ của họ hoặc phiên bản s3 với apis được tích hợp vào thư viện của họ.
The_Brink

9
@The_Brink Cảm ơn phản hồi. Điều này chắc chắn là trên radar của chúng tôi!
Michael Lehenbauer 17/1/2015

4
@ezain Đúng rồi. Tôi có thể không đề xuất phương pháp này cho các trang sản xuất lớn (bạn thực sự muốn có dịch vụ phục vụ hình ảnh được CDN hỗ trợ), nhưng nó dễ dàng và "đủ tốt" cho nhiều mục đích sử dụng.
Michael Lehenbauer

25

Có, bạn có thể lưu trữ và xem hình ảnh trong Firebase. Bạn có thể sử dụng một filepicker để có được tập tin hình ảnh. Sau đó, bạn có thể lưu trữ hình ảnh theo cách bạn muốn, tôi thích Amazon s3. Khi hình ảnh được lưu trữ, bạn có thể hiển thị hình ảnh bằng cách sử dụng URL được tạo cho hình ảnh.

Hi vọng điêu nay co ich.


3
Kiểm tra các tài liệu Firbase được cập nhật cho điều này: firebase.google.com/docs/st
Storage / # key_fifts

Nếu bạn định lưu trữ hình ảnh trên amazon, tại sao không lưu nó vào Firebase Storage ?
Ojonugwa Jude Ochalifu

19

Cuối cùng tôi đã lưu trữ các hình ảnh ở định dạng base64. Tôi dịch chúng từ giá trị base64 của chúng khi được gọi lại từ firebase.


1
Vấn đề duy nhất với phương pháp này là khi hình ảnh lớn, việc di chuyển chúng qua các hoạt động khiến ứng dụng bị chậm và trong một số trường hợp bị sập
Ojonugwa Jude Ochalifu

10

Bạn cũng có thể sử dụng một dịch vụ được gọi là Filepickersẽ lưu trữ hình ảnh của bạn đến máy chủ của họ và Filepicker hiện được gọi là Filestack, sẽ cung cấp cho bạn một url đến hình ảnh. Bạn có thể lưu trữ url vào Firebase.


tôi thấy dịch vụ này từ bình luận của bạn tôi đã thử nhưng không hài lòng lắm về nó.
bpolat

3

Có một vài cách làm đầu tiên tôi đã làm theo cách Grendal2501 đã làm. Sau đó tôi đã làm nó tương tự như user15163, bạn có thể lưu URL hình ảnh trong căn cứ hỏa lực và lưu trữ hình ảnh trên máy chủ firebase của bạn hoặc Amazon S3;


403 lỗi cố gắng chèn và kết xuất hình ảnh - gặp sự cố về quyền với hình ảnh khi được tải lên - bất kỳ thông tin nào về cách bạn thiết lập tải lên. Tôi đã thử sử dụng acl: 'đọc công khai' - nhưng sau đó việc tải lên không thành công - với 403. Bất kỳ chính sách thông tin và chính sách xô nào có thể giúp đỡ - sẽ rất tuyệt. AWS - tài liệu rất khó và không có thông tin gỡ lỗi với lỗi khác sau đó truy cập bị từ chối.
jamie

2
Hỏi điều này như một câu hỏi khác
Jakob Hartman

ý tưởng công bằng :) được thực hiện - mặc dù ngăn xếp có thể khác - nếu có bất kỳ sự kích động nào bạn có thể cho tôi - sẽ được hoan nghênh. Gỡ lỗi lỗi AWS S3 là siêu bực bội - ít nhất là cho đến nay. stackoverflow.com/questions/31998827/ từ
jamie

2

Sử dụng chuỗi Base64 trong JSON sẽ rất nặng. Trình phân tích cú pháp phải làm rất nhiều việc nặng. Hiện tại, Fresco chỉ hỗ trợ cơ sở hỗ trợ Base64. Tốt hơn là bạn đặt một cái gì đó lên Amazon Cloud hoặc Firebase Cloud. Và lấy một hình ảnh như một URL. Vì vậy, bạn có thể sử dụng Picasso hoặc Glide cho bộ nhớ đệm.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.