текст перекладу
Завантаження файлів у GCS з Django-додатку – це простий процес. Виконуючи ці кроки, ви зможете швидко та легко завантажити файли в GCS.
ілюстрація бекенд-інженера
Під час розробки веб-застосунків за допомогою Django, часто виникає потреба керувати файлами, завантаженими користувачами.
Google Cloud Storage (GCS) — це відмінне рішення для зберігання цих файлів.
З правильною інтеграцією, Django може легко завантажувати файли безпосередньо в GCS.
Ця стаття покроково покаже, як реалізувати функцію завантаження файлів в GCS у вашому Django-додатку.
https://www.youtube.com/@halovina
Чому варто використовувати GCS?
- Масштабованість: GCS призначений для обробки великих обсягів даних.
- Доступність: GCS пропонує високу доступність.
- Безпека: Ваші дані зашифровані під час зберігання та передачі.
- Легка інтеграція: GCS надає SDK для різних мов програмування, зокрема Python, який використовується в Django.
Передумови
Перед тим, як почати, переконайтеся, що у вас є:
- Обліковий запис Google Cloud: Створіть обліковий запис і активуйте службу Cloud Storage.
- Проект Google Cloud: Створіть новий проект або виберіть існуючий.
- Обліковий запис служби: Створіть обліковий запис служби з роллю Storage Object Admin.
- JSON-ключ: Завантажте JSON-ключ для вашого облікового запису служби.
- Розробницьке середовище Django: Переконайтесь, що у вас встановлено розробницьке середовище Django.
Підготовка
A) Встановлення бібліотеки
Переконайтесь, що бібліотека google-cloud-storage встановлена за допомогою pip:
pip install google-cloud-storage
B) Конфігурація Google Cloud Storage
- Створіть кошик у Google Cloud Storage.
- Створіть обліковий запис служби та завантажте JSON-ключ.
- Збережіть JSON-ключ у безпечному каталозі та налаштуйте змінну середовища GOOGLEAPPLICATIONCREDENTIALS на шлях до цього файлу.
Код Django
import os
from django.shortcuts import render, redirect
from google.cloud import storage
# Замініть на ім'я вашого кошика та шлях до файлу JSON.
BUCKET_NAME = 'your-bucket-name'
# Замініть на повний шлях до файлу JSON-ключа.
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/your/key.json'
def upload_image(request):
if request.method == 'POST':
if 'image' not in request.FILES:
return render(request, 'upload.html', {'error': 'Tidak ada file yang diunggah'})
image = request.FILES['image']
# Створіть клієнта для взаємодії з Google Cloud Storage
storage_client = storage.Client()
bucket = storage_client.bucket(BUCKET_NAME)
blob = bucket.blob(image.name)
# Завантажте файли в Google Cloud Storage
blob.upload_from_file(image)
return redirect('upload_image') # Перенаправити на URL з ім'ям 'upload_image'
else:
return render(request, 'upload.html')
Пояснення коду:
- Імпортуємо бібліотеку: Імпортуємо бібліотеку google.cloud для взаємодії з Google Cloud Storage.
- Конфігурація: Замініть BUCKETNAME_ на ім'я вашого кошика та налаштуйте змінну середовища GOOGLEAPPLICATIONCREDENTIALS на шлях до JSON-ключа.
- Подання
Перевірка запиту: Перевіряємо, чи є завантажений файл.
Створення клієнта: Створюємо клієнта для взаємодії з Google Cloud Storage.
Завантаження файлу: Завантажуємо файл у вказаний кошик.
Перенаправлення: Перенаправляємо на ту саму сторінку.
HTML шаблон (upload.html)
{% if error %}
{{ error }}
{% endif %} {% csrf_token %} Upload
Шлях URL
from django.urls import path
from . import views
urlpatterns = [
path('upload/', views.upload_image, name='upload_image'),
]
Важливе
1.
текст перекладу
Безпека: Переконайтесь, що ви зберігаєте JSON-ключ у безпечному місці і не завантажуєте його в публічні репозиторії.
2. Обробка помилок: Додайте кращу обробку помилок для випадків, таких як відсутність кошика, недостатньо прав і т. д.
3. Оптимізація: Ви можете оптимізувати розмір зображень перед їх завантаженням у Google Cloud Storage, щоб заощадити місце для зберігання.
4. Метадані: Ви можете додавати метадані до об'єктів blob для встановлення властивостей, таких як content-type, cache control і т. д.
5. Валідація: Додайте валідацію для типів завантажених файлів, щоб дозволяти лише зображення.
Хочете дізнатися більше?
Давайте обговоримо це в коментарях!
Поділіться цим з іншими друзями, якщо вважаєте, що цей туторіал корисний.
Потрібна додаткова допомога?
Не соромтесь запитувати, якщо у вас є подальші питання. Ви можете надати більше деталей про додаток, який ви намагаєтесь створити, щоб я міг запропонувати більш конкретне рішення.
Знайти мене: https://medium.com/@alfininfo/about
Перекладено з: Upload Files to Google Cloud Storage (GCS) with Django: The Complete Guide