DjangoでBase64からファイルフィールドを作成する方法


  1. ファイルフィールドを持つモデルを作成する まず、ファイルフィールドを持つモデルを作成しましょう。例えば、以下のようなモデルを作成します。
from django.db import models
class MyModel(models.Model):
    file_field = models.FileField(upload_to='uploads/')
  1. Base64データをファイルフィールドに変換する 次に、Base64エンコードされたデータをファイルフィールドに変換する関数を作成します。以下のコードは、Base64データをデコードし、一時ファイルに保存してからファイルフィールドに代入する例です。
import base64
from django.core.files.base import ContentFile
def save_file_from_base64(file_data, file_field):
    decoded_file = base64.b64decode(file_data)
    file_name = 'example_file.png'  # ファイル名を適宜変更してください
    file_field.save(file_name, ContentFile(decoded_file), save=True)
  1. ビューでBase64データを処理する 最後に、ビューでBase64データを受け取り、ファイルフィールドに変換する方法を示します。以下の例では、POSTリクエストのデータからBase64データを取得し、save_file_from_base64関数を使ってファイルフィールドに保存しています。
from django.http import JsonResponse
def upload_file(request):
    if request.method == 'POST':
        file_data = request.POST.get('file_data')  # POSTデータからBase64データを取得
        my_model = MyModel.objects.create()  # モデルのインスタンスを作成
        save_file_from_base64(file_data, my_model.file_field)  # Base64データをファイルフィールドに保存
        return JsonResponse({'message': 'File uploaded successfully'})

これで、Base64データをファイルフィールドに変換する方法がわかりました。必要に応じて、ファイルの拡張子や保存場所を適宜変更してください。