Django Rest Frameworkで動作するファイルアップロードシステムを取得しようとしています。アップロードされたファイルデータをシリアライズするDjango Rest Framework
アップロードしたいファイルは、カスタムXMLファイルである.gpxファイルです。私はデータベースにファイルを格納したくないのではなく、それらから情報を抽出し、それを私のモデルに入力したいと思います。
私は一時ファイルを取得して情報を抽出し、必要に応じてモデル要素を作成する関数を持っています。私が探しているのは、アップロードされてこの関数に渡される前に、ファイルのチェックをいくつか実行することです。
どうすればよいですか?
ファイルのアップロードは、一般的なAPIViewとputコマンドのドキュメント(下記参照)のように現在行われています。これは完全に動作します。アップロードする前にこのファイルの有効性を確認するのが最善の方法を知りたいだけです。
views.py
class FileUploadView(views.APIView):
parser_classes = (FileUploadParser,)
def put(self, request, filename, format=None):
up_file = request.data['file']
SaveGPXtoModel(up_file, request.user)
return Response(status=204)
APIは、これらのチェックを行うべきか、それがファイルが既に検証されていると仮定すべきか?
Djangoでは、シリアライザを使用してこれらのチェックを行うと、これらのチェックはフォームによって処理されますか?
シリアライザを使用すると、1つのファイルが入力として存在し、さまざまなデータポイントが出力として重要なのでしょうか?
ユーザー入力を常に明示的に検証します。 –
また、ファイル拡張子にも依存しないでください。悪質なものを '.gpx'に変更するのは簡単すぎるでしょう。 –