Django ファイル一括アップロード/ダウンロード実装ガイド
Djangoの組み込みファイルアップロード機能を使用して、ファイルの一括アップロードとダウンロードができます。以下は簡単な例です:
- ファイルを一括アップロードする:
from django.shortcuts import render
from django.core.files.storage import FileSystemStorage
def upload_files(request):
if request.method == 'POST' and request.FILES.getlist('files'):
for file in request.FILES.getlist('files'):
fs = FileSystemStorage()
fs.save(file.name, file)
return render(request, 'upload.html')
上記の例では、ファイルの一括アップロードを処理するビュー関数upload_filesを定義しました。POSTリクエストでは、request.FILES.getlist(‘files’)を使用してアップロードされたすべてのファイルのリストを取得し、それらを個別にファイルシステムに保存します。
- ファイルをまとめてダウンロード:
import os
from django.http import HttpResponse
from django.core.files.storage import FileSystemStorage
def download_files(request):
files = os.listdir('path_to_files_directory')
response = HttpResponse(content_type='application/zip')
zip_file = FileSystemStorage().zip_folder('path_to_files_directory', files)
response['Content-Disposition'] = 'attachment; filename="files.zip"'
response['Content-Length'] = os.path.getsize(zip_file)
response.write(open(zip_file, 'rb').read())
return response
上記の例では、ファイルの一括ダウンロードを処理するビュー関数download_filesを定義しました。まず、フォルダ内のすべてのファイルリストを取得し、それらをzipファイルにまとめ、ユーザーがダウンロードできるように応答として返します。
重要な点は、上記の例はファイルの一括アップロードとダウンロードの基本的な方法を示しているだけであり、実際のアプリケーションでは特定の要求に基づいて適切に修正や最適化を行う必要があるということです。