# Django 5.2.8 documentation

# Objektet ”Fil

Modulen `django.core.files` och dess undermoduler innehåller inbyggda klasser för grundläggande filhantering i Django.

## Klassen ”Fil

class File(file_object, name=None)

  The `File` class is a thin wrapper around a Python file object with some Django-specific additions. Internally, Django uses this class when it needs to represent a file.

  `File`-objekt har följande attribut och metoder:

  name

    Namnet på filen inklusive den relativa sökvägen från `MEDIA_ROOT`.

  size

    Filens storlek i byte.

  file

    The underlying file object that this class wraps.

    Var försiktig med detta attribut i underklasser.

    Some subclasses of `File`, including `ContentFile` and `FieldFile`, may replace this attribute with an object other than a Python file object. In these cases, this attribute may itself be a `File` subclass (and not necessarily the same subclass). Whenever possible, use the attributes and methods of the subclass itself rather than the those of the subclass’s `file` attribute.

  mode

    Läs-/skrivläge för filen.

  open(mode=None, *args, **kwargs)

    Open or reopen the file (which also does `File.seek(0)`). The `mode` argument allows the same values as Python’s built-in `open()`. `*args` and `**kwargs` are passed after `mode` to Python’s built-in `open()`.

    När en fil öppnas på nytt kommer `mode` att åsidosätta det läge som filen ursprungligen öppnades med; `None` innebär att filen öppnas på nytt med det ursprungliga läget.

    Den kan användas som en kontexthanterare, t.ex. `with file.open() as f:`.

  __iter__()

    Iterera över filen och få fram en rad i taget.

  chunks(chunk_size=None)

    Iterera över filen och få fram ”chunks” av en viss storlek. `chunk_size` är som standard 64 KB.

    Detta är särskilt användbart med mycket stora filer eftersom det gör att de kan strömmas från disken och undviker att lagra hela filen i minnet.

  multiple_chunks(chunk_size=None)

    Returnerar `True` om filen är tillräckligt stor för att kräva flera bitar för att få tillgång till allt innehåll med en viss `chunk_size`.

  close()

    Stäng filen.

  Förutom de listade metoderna, `File` följande attribut och metoder för sitt `file`-objekt: `encoding`, `fileno`, `flush`, `isatty`, `newlines`, `read`, `readinto`, `readline`, `readlines`, `seek`, `tell`, `truncate`, `write`, `writelines`, `readable()`, `writable()` och `seekable()`.

## Klassen ”ContentFile” (innehållsfil)

class ContentFile(content, name=None)

  Klassen `ContentFile` ärver från `File`, men till skillnad från `File` arbetar den med stränginnehåll (bytes stöds också), snarare än en faktisk fil. Till exempel:

      from django.core.files.base import ContentFile

      f1 = ContentFile("esta frase está en español")
      f2 = ContentFile(b"these are bytes")

## Klassen ”ImageFile” (bildfil)

class ImageFile(file_object, name=None)

  Django tillhandahåller en inbyggd klass specifikt för bilder. `django.core.files.images.ImageFile` ärver alla attribut och metoder från `File`, och tillhandahåller dessutom följande:

  width

    Bildens bredd i pixlar.

  height

    Bildens höjd i pixlar.

## Ytterligare metoder för filer som är kopplade till objekt

Alla `File` som är associerade med ett objekt (som med `Car.photo`, nedan) kommer också att ha ett par extra metoder:

File.save(name, content, save=True)

  Sparar en ny fil med det filnamn och innehåll som anges. Detta kommer inte att ersätta den befintliga filen, utan skapa en ny fil och uppdatera objektet så att det pekar på den. Om `save` är `True` kommer modellens metod `save()` att anropas när filen har sparats. Det vill säga dessa två rader:

      >>> car.photo.save("myphoto.jpg", content, save=False)
      >>> car.save()

  är likvärdiga med:

      >>> car.photo.save("myphoto.jpg", content, save=True)

  Observera att argumentet `content` måste vara en instans av antingen `File` eller av en underklass av `File`, t.ex. `ContentFile`.

File.delete(save=True)

  Tar bort filen från modellinstansen och raderar den underliggande filen. Om `save` är `True` kommer modellens metod `save()` att anropas när filen har raderats.