Skip to main content

A Django storage backend that gives random names to files.

Project description

A Django storage backend that gives random names to files.

By default, django.core.files.storage.FileSystemStorage deals with conflicting filenames by appending an underscore to the file. For instance, if you try to create hello.txt when it already exists, it will rename it as hello_.txt.

django-randomfilenamestorage creates random filenames, so if you try to create hello.txt, it will save it as 7z0a8m25sh9fyitx.txt. Directory names and extensions are preserved, only the root filename is randomized.

Installing

The easiest way to install django-randomfilenamestorage is to use pip:

pip install django-randomfilenamestorage

Quick Start

In your Django settings file:

  • Set DEFAULT_FILE_STORAGE to 'django_randomfilenamestorage.storage.RandomFilenameFileSystemStorage'

  • Optionally, add 'django-dbstorage' to INSTALLED_APPS

This gives you random filenames, backed on Django’s FileSystemStorage storage class.

RandomFilenameMetaStorage

You can define a new underlying storage class by using RandomFilenameMetaStorage to wrap it:

from django.core.files.storage import get_storage_class

from django_randomfilenamestorage.storage import RandomFilenameMetaStorage

RandomFilenameMyStorage = RandomFilenameMetaStorage(
    storage_class=get_storage_class('myapp.storage.MyStorage'),
)

RandomFilenameMetaStorage defaults to 16-character root filenames. To change the default, define settings.RANDOM_FILENAME_LENGTH to a different integer value.

To change the filename length of a wrapped storage class, pass in a length argument to RandomFilenameMetaStorage. To override it for a particular storage instance, pass in a randomfilename_length argument to its constructor.

Efficient random filename generation

RandomFilenameMetaStorage is careful about not overwriting existing files, on creation. Unfortunately, many storage classes do not throw an OSError with EEXISTS when they detect a duplicate file on _save().

If the underlying storage class accepts uniquify_names=False in its constructor, RandomFilenameMetaStorage will reduce the number of round-trips to the underlying storage class and make random filename generation more efficient.

Safe storage classes include:

Project details


Release history Release notifications | RSS feed

This version

1.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-randomfilenamestorage-1.1.tar.gz (6.3 kB view details)

Uploaded Source

File details

Details for the file django-randomfilenamestorage-1.1.tar.gz.

File metadata

File hashes

Hashes for django-randomfilenamestorage-1.1.tar.gz
Algorithm Hash digest
SHA256 51ea56ff6970364573b8739a163a0e3f229e2240ddb8899a2ce0d82e94490ef5
MD5 28b95e20eeb8b9f13e849b99322c739e
BLAKE2b-256 44a76b74bc36e37a78e0798ff945e9b4af0520a5a097bae2222d377c32379d1a

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page