次のような状況があります。
models.py
class ShapeFile(models.Model): name = models.SlugField() file = models.FileField(upload_to=get_upload_path) def get_upload_path(instance, filename): return os.path.join("my","custom","path",filename)
ビュー.py
def shapeIng(request): if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): form.save()
このように、アップロードされたファイルは自動的にチャンク化されますか? そうでない場合は、チャンクしたいので、ドキュメントで提案されているように、次のことを試しました
models.py
from django.core.files.storage import default_storage class ShapeFile(models.Model): name = models.SlugField() file = models.FileField(upload_to=get_upload_path) def get_upload_path_2(filename): return os.path.join(default_storage.path(''),"my","custom", "path","%s" % filename)
ビュー.py
from os import makedirs form os.path import dirname from django.core.files.storage import default_storage def shapeIng(request): if request.method == 'POST': form = UploadForm(request.POST, request.FILES) if form.is_valid(): # Split uploaded file into chunks fileName = request.FILES['file'] filePath = get_upload_path_2(fileName) handle_uploaded_file(fileName, filePath) # Uploads the file form.save() # Uploads the file again!!! def handle_uploaded_file(fileName, filePath): makedirs(dirname(filePath)) with open(filePath, 'wb+') as destination: for chunk in fileName.chunks(): destination.write(chunk)
これは機能しますが、ファイルは Django ドキュメントに準拠した名前 ( myFile.zipと *myFile_1.zip* など) で 2 回保存されます。チャンクされてsave()
いるかどうかはわかりません。チャンクがModelFormで自動的に行われるかどうかを説明してください。また、実際の例を教えてください。save()
通常どおり「名前」フィールドを保存し、「ファイル」フィールドをチャンクするために、メソッドを再定義する必要がありますか? ありがとう。