[解決済み] サーバーサイドのFileFieldで特定のファイルタイプのみを受け付けるようにする
2023-01-19 11:26:50
質問
どのようにすれば
FileField
を制限して、特定の種類のファイル (ビデオ、オーディオ、pdf など) のみを受け入れるようにするには、サーバー側で洗練された方法を使用できますか?
どのように解決するのですか?
非常に簡単な方法の1つは、カスタムバリデータを使用することです。
あなたのアプリの
validators.py
:
def validate_file_extension(value):
import os
from django.core.exceptions import ValidationError
ext = os.path.splitext(value.name)[1] # [0] returns path+filename
valid_extensions = ['.pdf', '.doc', '.docx', '.jpg', '.png', '.xlsx', '.xls']
if not ext.lower() in valid_extensions:
raise ValidationError('Unsupported file extension.')
次に
models.py
:
from .validators import validate_file_extension
... そして、フォームフィールドにバリデータを使用します。
class Document(models.Model):
file = models.FileField(upload_to="documents/%Y/%m/%d", validators=[validate_file_extension])
こちらもご覧ください。 FileFields を持つ ModelForms のファイルアップロードでファイルタイプを制限する方法は? .
警告
悪意のあるメディアファイルからコード実行環境を保護するために
- Exif を使用する ライブラリ を使用して、メディアファイルを適切に検証します。
- メディアファイルをアプリケーションコードから分離する 実行環境から分離します。
- 可能であれば、S3、GCS、Minio などのソリューションを使用する。 のようなソリューションを使用します。
- クライアント側でメディア ファイルを読み込むときは、クライアント ネイティブのメソッドを使用します (たとえば、ブラウザでメディア ファイルを非安全に読み込んでいる場合は ブラウザでメディア ファイルを安全に読み込む場合、細工された JavaScript コードが実行される可能性があります)。
関連
-
Djangoの基本(16)。テンプレートタグの紹介とそのカスタマイズ方法
-
[解決済み] RESTful WebServiceにファイルや関連データをJSONで投稿する。
-
[解決済み] jQuery Ajax ファイルアップロード
-
[解決済み] JSP/Servletを使用してサーバーにファイルをアップロードするにはどうすればよいですか?
-
[解決済み] HTML Input="file" Accept Attribute File Type (CSV)
-
[解決済み】djangoのビジネスロジックとデータアクセスの分離
-
[解決済み】Djangoモデルで数値フィールドの最大値を制限する方法は?
-
[解決済み] [Solved] カスタムDjango manage.pyコマンドをテストドライバから直接呼び出すにはどうしたらいいですか?
-
[解決済み】アップロード前にjavascriptでファイルのMIMEタイプをチェックするには?
-
[解決済み] egg_infoエラーでpipからインストールできない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ImproperlyConfiguredです。INSTALLED_APPS の設定を要求されたが、設定されていない
-
[解決済み] Django の管理者パスワードをリセットする方法は?
-
[解決済み] request.GETでURLパラメータを取得する
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] Django ManyToMany filter()
-
[解決済み] django のクラスベースのビューで permission_required デコレータを使用する方法
-
[解決済み] djangoでurls.pyから直接名前付きurlパターンにリダイレクトする?
-
[解決済み] Djangoで異なる設定でUnitテストを行うには?
-
[解決済み] DjangoでSELECT COUNT(*) GROUP BYとORDER BYを行うにはどうすればよいですか?
-
[解決済み] django のモデルのクラス名を取得する