---
title: "Obyek File"
version: 5.1
locale: id
source: https://docs.djangoproject.com/id/5.1/ref/files/file/
canonical: https://djangodocs.dev/id/5.1/ref/files/file/
---
# Obyek `File`

The [`django.core.files`](/id/5.1/ref/files/#module-django.core.files) module and its submodules contain built-in classes
for basic file handling in Django.

## Kelas `File`

#### `class File(file_object, name=None)`

The [`File`](#django.core.files.File) class is a thin wrapper around a Python
[file object](https://docs.python.org/3/glossary.html#term-file-object) with some Django-specific additions.
Internally, Django uses this class when it needs to represent a file.

Obyek [`File`](#django.core.files.File) mempunyai atribut dan metode berikut:

#### `name`

Nama dari berkas termasuk jalur relatif dari [`MEDIA_ROOT`](/id/5.1/ref/settings/#std-setting-MEDIA_ROOT).

#### `size`

Ukuran berkas dalam byte.

#### `file`

[file object](https://docs.python.org/3/glossary.html#term-file-object) pokok dimana kelas ini dibungkus.

> **Berhati-hatilah dengan atribut ini dalam subkelas.**
>
> Beberapa subkelas dari [`File`](#django.core.files.File), termasuk [`ContentFile`](#django.core.files.base.ContentFile) dan [`FieldFile`](/id/5.1/ref/models/fields/#django.db.models.fields.files.FieldFile), mungkin mengganti atribut ini dengan sebuah obyek selain sebuah [file object](https://docs.python.org/3/glossary.html#term-file-object) Python. Dalam kasus ini, atribut ini itu sendiri mungkin berupa subkelas [`File`](#django.core.files.File) (dan belum tentu subkelas sama). Bilamana memungkinkan, gunakan atribut dan metode dari subkelas itu sendiri daripada itu dari subkelas atribut `file`.

#### `mode`

Suasana baca/tulis untuk berkas.

#### `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()`](https://docs.python.org/3/library/functions.html#open). `*args` and `**kwargs`
are passed after `mode` to Python's built-in [`open()`](https://docs.python.org/3/library/functions.html#open).

When reopening a file, `mode` will override whatever mode the file
was originally opened with; `None` means to reopen with the original
mode.

Itu dapat digunakan sebagai pengelola konteks, misalnya `with file.open() as f:`.

> **Changed in Django 5.0**
>
> Support for passing `*args` and `**kwargs` was added.

#### `__iter__()`

Iterate over the file yielding one line at a time.

#### `chunks(chunk_size=None)`

Iterate over the file yielding "chunks" of a given size. `chunk_size`
defaults to 64 KB.

This is especially useful with very large files since it allows them to
be streamed off disk and avoids storing the whole file in memory.

#### `multiple_chunks(chunk_size=None)`

Returns `True` if the file is large enough to require multiple chunks
to access all of its content give some `chunk_size`.

#### `close()`

Tutup berkas.

Sebagai tambahan pada metode-metode terlampir, [`File`](#django.core.files.File) membuka atribut-atribut berikut dan metode dari `file` object: `encoding`, `fileno`, `flush`, `isatty`, `newlines`, `read`, `readinto`, `readline`, `readlines`, `seek`, `tell`, `truncate`, `write`, `writelines`, `readable()`, `writable()`, dan `seekable()` nya.

## Kelas `ContentFile`

#### `class ContentFile(content, name=None)`

Kelas `ContentFile` mewarisi dari [`File`](#django.core.files.File), tapi tidak seperti [`File`](#django.core.files.File) itu berjalan pada isi string (byte juga didukung), daripada sebuah berkas sebenarnya. Sebagai contoh:

```
from django.core.files.base import ContentFile

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

## Kelas `ImageFile`

#### `class ImageFile(file_object, name=None)`

Django menyediakan sebuah kelas siap-pakai khususnya untuk gambar. [`django.core.files.images.ImageFile`](#django.core.files.images.ImageFile) mewarisi semua atribut dan metode dari [`File`](#django.core.files.File), dan tambahannya menyediakan berikut:

#### `width`

Lebar gambar dalam pixel.

#### `height`

Tinggi gambar dalam pixel.

## Metode tambahan pada berkas-berkas dilampirkan pada obyek

[`File`](#django.core.files.File) apapun yang berkaitan dengan sebuah obyek (seperti `Car.photo`, dibawah) akan juga mempunyai sepasang metode-metode tambahan:

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

Saves a new file with the file name and contents provided. This will not
replace the existing file, but will create a new file and update the object
to point to it. If `save` is `True`, the model's `save()` method will
be called once the file is saved. That is, these two lines:

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

are equivalent to:

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

Note that the `content` argument must be an instance of either
[`File`](#django.core.files.File) or of a subclass of [`File`](#django.core.files.File), such as
[`ContentFile`](#django.core.files.base.ContentFile).

#### `File.delete(save=True)`

Removes the file from the model instance and deletes the underlying file.
If `save` is `True`, the model's `save()` method will be called once
the file is deleted.
