# Django 5.2.8 documentation

# API för fillagring

## Hämta standardlagringsklass

Django tillhandahåller praktiska sätt att komma åt standardlagringsklassen:

storages

  Ett ordboksliknande objekt som gör det möjligt att hämta en lagringsinstans med hjälp av dess alias enligt definitionen i `STORAGES`.

  `storages` har ett attribut `backends`, vilket som standard är det råa värde som anges i `STORAGES`.

  Dessutom tillhandahåller `storages` en `create_storage()`-metod som accepterar den ordbok som används i `STORAGES` för en backend, och returnerar en lagringsinstans baserad på den backend-definitionen. Detta kan vara användbart för tredjepartspaket som behöver instansiera lagringsenheter i tester:

      >>> from django.core.files.storage import storages
      >>> storages.backends
      {'default': {'BACKEND': 'django.core.files.storage.FileSystemStorage'},
       'staticfiles': {'BACKEND': 'django.contrib.staticfiles.storage.StaticFilesStorage'},
       'custom': {'BACKEND': 'package.storage.CustomStorage'}}
      >>> storage_instance = storages.create_storage({"BACKEND": "package.storage.CustomStorage"})

class DefaultStorage

  `DefaultStorage` ger latent åtkomst till standardlagringssystemet som definieras av `default`-nyckeln i `STORAGES`. `DefaultStorage` använder `storages` internt.

default_storage

  `default_storage` är en instans av `DefaultStorage`.

## Klassen `FileSystemStorage` (filsystemlagring)

class FileSystemStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None, allow_overwrite=False)

  Klassen `FileSystemStorage` implementerar grundläggande fillagring på ett lokalt filsystem. Den ärver från `Storage` och tillhandahåller implementationer för alla dess offentliga metoder.

  Observera

  Metoden `FileSystemStorage.delete()` kommer inte att ge upphov till ett undantag om det angivna filnamnet inte finns.

  location

    Absolut sökväg till den katalog som innehåller filerna. Standardvärdet är värdet i din `MEDIA_ROOT`-inställning.

  base_url

    URL som används för de filer som lagras på den här platsen. Standardvärdet är värdet i din inställning `MEDIA_URL`.

  file_permissions_mode

    De filsystembehörigheter som filen ska få när den sparas. Standardvärde är `FILE_UPLOAD_PERMISSIONS`.

  directory_permissions_mode

    De filsystembehörigheter som katalogen ska få när den sparas. Standardvärde är `FILE_UPLOAD_DIRECTORY_PERMISSIONS`.

  allow_overwrite

    Flagga för att kontrollera om det är tillåtet att spara en ny fil över en befintlig. Standardvärdet är `False`.

  get_created_time(name)

    Returnerar en `datetime` av systemets ctime, d.v.s. `os.path.getctime()`. På vissa system (t.ex. Unix) är detta tidpunkten för den senaste ändringen av metadata, och på andra (t.ex. Windows) är det tidpunkten då filen skapades.

## Klassen `InMemoryStorage` (minneslagring)

class InMemoryStorage(location=None, base_url=None, file_permissions_mode=None, directory_permissions_mode=None)

  Klassen `InMemoryStorage` implementerar en minnesbaserad fillagring. Den har ingen persistens, men kan vara användbar för att påskynda tester genom att undvika diskåtkomst.

  location

    Absolut sökväg till det katalognamn som tilldelats filer. Standardvärdet är värdet i din inställning `MEDIA_ROOT`.

  base_url

    URL som används för de filer som lagras på den här platsen. Standardvärdet är värdet i din inställning `MEDIA_URL`.

  file_permissions_mode

    De filsystembehörigheter som tilldelas filer, tillhandahålls för kompatibilitet med `FileSystemStorage`. Standardvärde är `FILE_UPLOAD_PERMISSIONS`.

  directory_permissions_mode

    De filsystembehörigheter som tilldelas kataloger, tillhandahålls för kompatibilitet med `FileSystemStorage`. Standardvärde är `FILE_UPLOAD_DIRECTORY_PERMISSIONS`.

## Klassen `Storage` (lagring)

class Storage

  Klassen `Storage` tillhandahåller ett standardiserat API för lagring av filer, tillsammans med en uppsättning standardbeteenden som alla andra lagringssystem kan ärva eller åsidosätta efter behov.

  Observera

  När metoder returnerar naiva `datetime`-objekt kommer den effektiva tidszonen som används att vara det aktuella värdet för `os.environ['TZ']`; observera att detta vanligtvis ställs in från Djangos `TIME_ZONE`.

  delete(name)

    Raderar filen som refereras till av `namn`. Om borttagning inte stöds på mållagringssystemet kommer detta att ge upphov till `NotImplementedError` istället.

  exists(name)

    Returnerar `True` om en fil som refereras till av det angivna namnet redan finns i lagringssystemet.

  get_accessed_time(name)

    Returnerar en `datetime` av den senaste åtkomsttiden för filen. För lagringssystem som inte kan returnera den senaste åtkomsttiden kommer detta att ge upphov till `NotImplementedError`.

    Om `USE_TZ` är `True`, returneras en medveten `datetime`, annars returneras en naiv `datetime` i den lokala tidszonen.

  get_alternative_name(file_root, file_ext)

    Returnerar ett alternativt filnamn baserat på parametrarna `file_root` och `file_ext`, ett understreck plus en slumpmässig alfanumerisk sträng med 7 tecken läggs till filnamnet före tillägget.

  get_available_name(name, max_length=None)

    Returnerar ett filnamn baserat på parametern `name` som är ledigt och tillgängligt för att nytt innehåll ska kunna skrivas till på mållagringssystemet.

    Längden på filnamnet kommer inte att överstiga `max_length`, om det anges. Om ett fritt unikt filnamn inte kan hittas, kommer ett `SuspiciousFileOperation` undantag att uppstå.

    Om det redan finns en fil med `namn` anropas `get_alternative_name()` för att få ett alternativt namn.

  get_created_time(name)

    Returnerar en `datetime` av skapelsetiden för filen. För lagringssystem som inte kan returnera skapelsetiden kommer detta att ge upphov till `NotImplementedError`.

    Om `USE_TZ` är `True`, returneras en medveten `datetime`, annars returneras en naiv `datetime` i den lokala tidszonen.

  get_modified_time(name)

    Returnerar en `datetime` av den senaste modifieringstiden för filen. För lagringssystem som inte kan returnera den senaste modifierade tiden kommer detta att ge upphov till `NotImplementedError`.

    Om `USE_TZ` är `True`, returneras en medveten `datetime`, annars returneras en naiv `datetime` i den lokala tidszonen.

  get_valid_name(name)

    Returnerar ett filnamn baserat på parametern `name` som är lämpligt för användning på mållagringssystemet.

  generate_filename(filename)

    Validates the `filename` by calling `get_valid_name` and returns a filename to be passed to the `save()` method.

    The `filename` argument may include a path as returned by `FileField.upload_to`. In that case, the path won’t be passed to `get_valid_name` but will be prepended back to the resulting name.

    Standardimplementeringen använder `os.path`-operationer. Åsidosätt den här metoden om det inte är lämpligt för din lagring.

  listdir(path)

    Listar innehållet i den angivna sökvägen och returnerar en 2-tupel av listor; det första objektet är kataloger och det andra objektet är filer. För lagringssystem som inte kan tillhandahålla en sådan lista kommer detta att ge upphov till ett `NotImplementedError` istället.

  open(name, mode='rb')

    Öppnar filen som anges av `name`. Observera att även om den returnerade filen garanterat är ett `File`-objekt, kan det i själva verket vara någon underklass. I fallet med fjärrlagring av filer innebär detta att läsning/skrivning kan vara ganska långsam, så var försiktig.

  path(name)

    Sökvägen till det lokala filsystemet där filen kan öppnas med Pythons standard `open()`. För lagringssystem som inte är tillgängliga från det lokala filsystemet kommer detta att ge upphov till `NotImplementedError` istället.

  save(name, content, max_length=None)

    Sparar en ny fil i lagringssystemet, företrädesvis med det angivna namnet. Om det redan finns en fil med detta namn `namn` kan lagringssystemet ändra filnamnet efter behov för att få ett unikt namn. Det faktiska namnet på den lagrade filen kommer att returneras.

    Argumentet `max_length` skickas vidare till `get_available_name()`.

    Argumentet `content` måste vara en instans av `django.core.files.File` eller ett filliknande objekt som kan omslutas av `File`.

  size(name)

    Returnerar den totala storleken, i byte, på filen som refereras av `namn`. För lagringssystem som inte kan returnera filstorleken kommer detta att ge upphov till `NotImplementedError` istället.

  url(name)

    Returnerar URL:en där innehållet i filen som refereras till av `name` kan nås. För lagringssystem som inte stöder åtkomst via URL kommer detta att ge upphov till `NotImplementedError` istället.

There are community-maintained solutions too!

Django has a vibrant ecosystem. There are storage backends highlighted on the Community Ecosystem page. The Django Packages Storage Backends grid has even more options for you!