การ upload รูปภาพลงใน Firebase(Cloud Storage) ด้วย Python3

แชร์ความรู้ภาษา Python ไพทอน การเขียนโปรแกรมภาษาไพทอน

Moderator: mindphp, ผู้ดูแลกระดาน

annie2301
PHP Super Member
PHP Super Member
โพสต์: 289
ลงทะเบียนเมื่อ: 01/12/2021 9:44 am

การ upload รูปภาพลงใน Firebase(Cloud Storage) ด้วย Python3

โพสต์ที่ยังไม่ได้อ่าน โดย annie2301 »

Storage คือ หนึ่งในบริการเก็บข้อมูล(ไฟล์ต่างๆ)ของ Firebase สร้างขึ้นสำหรับนักพัฒนาแอปที่ต้องการจัดเก็บและให้บริการเนื้อหาที่ผู้ใช้สร้างขึ้น เช่น รูปภาพหรือวิดีโอ ซึ่ง Cloud Storage มีพื้นที่จัดเก็บที่มีประสิทธิภาพ เรียบง่าย และ คุ้มค่า และยังมี Google Firebase SDK สำหรับ Cloud Storage เพื่อเพิ่มความปลอดภัยในการ upload และ download ไฟล์ โดยไม่คำนึงถึงคุณภาพของอินเทอร์เน็ต


Library ที่จำเป็นต้องติดตั้ง

การ Upload รูปภาพลงใน Firebase(Cloud Storage)

จริงๆ upload ไฟล์ประภทอื่นก็ได้ แต่ในบทความจะ upload รูปภาพ
  • ตั้งค่า Project ให้ Firebase เชื่อมกับ ไฟล์ Python3
    • กดที่ icon "ฟันเฟือง" >> Project settings
      รูปตัวอย่างการเข้าเมนู Project settings
      รูปตัวอย่างการเข้าเมนู Project settings
      project_setting.jpg (9.87 KiB) Viewed 1080 times
    • กดที่ General
      รูปตัวอย่างการเข้าเมนู General
      รูปตัวอย่างการเข้าเมนู General
      general.jpg (10.97 KiB) Viewed 1080 times
    • เลื่อนลงไปที่ Your app (ต้องสร้างก่อนถึงจะขึ้นแบบนี้ ตอนสร้างเลือก web app นะ)
      • กดเลือก แอพ(ชื่อที่ตั้งไว้) >> เลือก Config >> copy โค้ด
        รูปตัวอย่างเลือก config copy code
        รูปตัวอย่างเลือก config copy code
        config.jpg (27.34 KiB) Viewed 1080 times
      • กดเลือก Service accounts >> Firebase Admin SDK >> Python >> Generrate new private key
        รูปตัวอย่างการ download account service
        รูปตัวอย่างการ download account service
        download_account_service.jpg (27.76 KiB) Viewed 1080 times
      • การกำหนดสิทธิ์การเข้าถึง
        • เข้าไปที่ Cloud Storage >> Rules >> Edit rules >> แล้ว แก้โค้ด ใส่ตามนี้เลย
          รูปตัวอย่างการเข้าไป edit rules
          รูปตัวอย่างการเข้าไป edit rules
          storage_edit_rules.jpg (41.45 KiB) Viewed 1080 times

          โค้ด: เลือกทั้งหมด

          rules_version = '2';
          service firebase.storage {
            match /b/{bucket}/o {
              match /{allPaths=**} {
                allow read, write;
              }
            }
          }
          
          ตอนนี้เราจะยังไม่ได้ไปยุ่งเกี่ยวกับ Authentication เราเลยยังไม่ใส่เงื่อนไข (ปรับเป็น true ไปก่อน)
      • สร้างไฟล์ python มา 1 ไฟล์ เอาโค้ดที่ copy มา โค้ดจะประมาณนี้ (ถ้าไม่มี databaseURL ให้ไปเปิดใช้ Realtime database ก่อนนะ)

        โค้ด: เลือกทั้งหมด

        import pyrebase
        
        config = {
            'apiKey': "AIzaSyA8atA1nkRwOzpxsl1q-JLP-8txwFKeHgs",
            'authDomain': "test-83205.firebaseapp.com",
            'projectId': "test-83205",
            'databaseURL': "https://test-83205-default-rtdb.asia-southeast1.firebasedatabase.app",
            'storageBucket': "test-83205.appspot.com",
            'messagingSenderId': "183552974163",
            'appId': "1:183552974163:web:a4ef0620099b9a6c8f95a6",
            'serviceAccount': 'your_key.json', ## add this line
            'measurementId': "${config.measurementId}" ## delete this ine
        }
        
        firebase_storage = pyrebase.initialize_app(config)
        storage = firebase_storage.storage()
        
        ใน dictionary config ต้องใส่ single code('') หรือไม่ก็ double code("") ให้ key ด้วย
        measurementId: "${config.measurementId}" จากที่ copy มาให้ลบบรรทัดนี้ออก เพราะไม่ใช้
        'serviceAccount': 'your_key.json' เอาชื่อไฟล์ private key ที่download มาใส่แทนที่ 'your_key.json'
        เอาไฟล์ private key มาไว้ที่ folder เดียวกับไฟล์ python ที่จะเชื่อมด้วย
      • โค้ดหลังจากที่ เปลี่ยนชื่อ private key และ ลบบรรทัด measurementId แล้ว

        โค้ด: เลือกทั้งหมด

        import pyrebase
        
        config = {
            'apiKey': "AIzaSyA8atA1nkRwOzpxsl1q-JLP-8txwFKeHgs",
            'authDomain': "test-83205.firebaseapp.com",
            'databaseURL': "https://test-83205-default-rtdb.asia-southeast1.firebasedatabase.app",
            'projectId': "test-83205",
            'storageBucket': "test-83205.appspot.com",
            'messagingSenderId': "183552974163",
            'appId': "1:183552974163:web:68b42db6a7e243748f95a6",
            'serviceAccount': 'test-83205-firebase-adminsdk-i50tj-804216b64f.json'
        }
        
        firebase_storage = pyrebase.initialize_app(config)
        storage = firebase_storage.storage()
        
    • โค้ด การ upload รูปภาพ ด้วยการเขียนโปรแกรมภาษา Python3

      โค้ด: เลือกทั้งหมด

      storage.child('image/jerry.jpg').put('jerry.jpg')
      
      ภายใน Cloud Storage ภาพชื่อ jerry.jpg เก็บใน Folder ชื่อ image <-- argument ใน method child()
      path ใน ระบบปฏิบัติการของเรา คือ 'jerry.jpg' (เอาไว้ใน folder เดียวกับไฟล์ python) <-- argument ใน method put()

สรุป




อ้างอิง

https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/3921-what-is-firebase-backend.html
https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2261-sdk-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html
https://www.mindphp.com/%E0%B8%84%E0%B8%B9%E0%B9%88%E0%B8%A1%E0%B8%B7%E0%B8%AD/73-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3/2194-web-services-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3.html
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: athirach.offcial, facebook.com [Crawler] และบุคลทั่วไป 83