---
title: "Conas rang stórála saincheaptha a scríobh"
version: 6.1
locale: ga
source: https://docs.djangoproject.com/ga/6.1/howto/custom-file-storage/
canonical: https://djangodocs.dev/ga/6.1/howto/custom-file-storage/
---
# Conas rang stórála saincheaptha a scríobh

Más gá duit stóráil comhaid saincheaptha a sholáthar - sampla coitianta ná comhaid a stóráil ar chóras iargúlta éigin - is féidir leat é sin a dhéanamh trí rang stórála saincheaptha a shainiú. Beidh ort na céimeanna seo a leanúint:

1. Caithfidh do chóras stórála saincheaptha a bheith ina fho-aicme de `Django.Core.Files.Storage.Storage`:

   ```
   from django.core.files.storage import Storage

   class MyStorage(Storage): ...
   ```
2. Caithfidh Django a bheith in ann do chóras stórála a dhéanamh gan aon argóintí. Ciallaíonn sé seo gur chóir aon socruithe a thógáil ó `django.conf.settings`:

   ```
   from django.conf import settings
   from django.core.files.storage import Storage

   class MyStorage(Storage):
       def __init__(self, option=None):
           if not option:
               option = settings.CUSTOM_STORAGE_OPTIONS
           ...
   ```
3. Your storage class must implement the [`_open()`](#django.core.files.storage._open) and [`_save()`](#django.core.files.storage._save)
   methods, along with any other methods appropriate to your storage class. See
   below for more on these methods.

   Ina theannta sin, má sholáthraíonn do rang stóráil comhad áitiúil, caithfidh sé an modh path () a shárú.
4. Caithfidh do rang stórála a bheith: ref: dífhoirmithe \<custom-deconstruct-method\>\`ionas gur féidir é a shraitheadh nuair a úsáidtear é ar réimse in imirce. Chomh fada agus a bhíonn argóintí ag do réimse atá féin:ref: \`serializable \<migration-serializing\>, is féidir leat an maisitheoir aicme `django.utils.deconstruct.deconstructible` a úsáid chuige seo (sin an rud a úsáideann Django ar FileSystemStorage).

De réir réamhshocraithe, ardaíonn na modhanna seo a leanas NotImplementederror\` agus is gnách go gcaithfear iad a shárú:

- [`Storage.delete()`](/ga/6.1/ref/files/storage/#django.core.files.storage.Storage.delete)
- [`Storage.exists()`](/ga/6.1/ref/files/storage/#django.core.files.storage.Storage.exists)
- [`Storage.listdir()`](/ga/6.1/ref/files/storage/#django.core.files.storage.Storage.listdir)
- [`Storage.size()`](/ga/6.1/ref/files/storage/#django.core.files.storage.Storage.size)
- [`Storage.url()`](/ga/6.1/ref/files/storage/#django.core.files.storage.Storage.url)

Tabhair faoi deara, áfach, nach bhfuil na modhanna seo uile ag teastáil agus gur féidir iad a fhágáil d'aon ghnó. Mar a tharlaíonn sé, is féidir gach modh a fhágáil gan cur i bhfeidhm agus Stóráil oibre a bheith agat fós.

Mar shampla, má bhíonn sé daor ábhar cúltaca stórála áirithe a liostáil, b'fhéidir go gcinneann tú gan Storage.listDir () a chur i bhfeidhm.

Sampla eile ba ea cúltaca nach láimhseálann ach scríbhneoireacht chuig comhaid. Sa chás seo, ní bheadh ort aon cheann de na modhanna thuas a chur i bhfeidhm.

I ndeireadh na dála, is fútsa atá cé acu de na modhanna seo a chuirtear i bhfeidhm. Beidh comhéadan páirteach (briste b'fhéidir) mar thoradh ar roinnt modhanna gan cur i bhfeidhm.

De ghnáth beidh tú ag iarraidh crúcaí a úsáid atá deartha go sonrach le haghaidh rudaí stórála saincheaptha Seo iad seo:

#### `_open(name, mode='rb')`

**Riachtanáil**.

Tugtar air ag Storage.open () , is é seo an meicníocht iarbhír a úsáideann an rang stórála chun an comhad a oscailt. Caithfidh sé seo réad Comhad a thabhairt ar ais, cé i bhformhór na gcásanna, beidh tú ag iarraidh roinnt fo-aicme a thabhairt ar ais anseo a chuireann loighic go sonrach don chóras stórála cúltaca i bhfeidhm. Ba chóir an eisceacht: EXC: FileNotFoundError a ardú nuair nach bhfuil comhad ann.

#### `_save(name, content)`

Glaoigh ```Storage.save () ``. Beidh an ``ainm ``imithe cheana féin trí ``get_valid_name ()``` agus ```get_available_name () ``, agus is réad ``Comhad``` féin a bheidh an `content`.

Ba chóir ainm iarbhír an chomhaid a shábháiltear a thabhairt ar ais (de ghnáth an ainm a chuirtear isteach, ach más gá don stóráil ainm an chomhaid a athrú, cuir an t-ainm nua ar ais ina ionad).

#### `get_valid_name(name)`

Filleann sé ainm comhaid atá oiriúnach le húsáid leis an gcóras stórála bunúsach. Is é an argóint `name` a cuireadh ar aghaidh chuig an modh seo ná an bunainm comhaid a seoladh chuig an bhfreastalaí nó, má tá `upload_to` inghlaoite, cuirtear ainm an chomhaid ar ais ar an modh sin tar éis aon fhaisnéis cosán a bhaint. Sáraigh é seo chun an chaoi a dtiontaítear carachtair neamhchaighdeánacha go comhadainmneacha sábháilte a shaincheapadh.

Ní choimeádann an cód a chuirtear ar Stóráil ach carachtair, tréimhsí agus béim alfa-uimhriúla ón ainm comhaid bunaidh, ag baint gach rud eile.

#### `get_alternative_name(file_root, file_ext)`

Tugann ainm comhaid malartach ar ais bunaithe ar na paraiméadair file\_root\` agus `file_ext`. De réir réamhshocraithe, cuirtear béim móide sreang alfauméireach randamach 7 charachtar leis an ainm comhaid roimh an síneadh.

#### `get_available_name(name, max_length=None)`

Filleann ainm comhaid atá ar fáil sa mheicníocht stórála, agus b'fhéidir ag cur an ainm comhaid a chuirtear ar fáil san áireamh. Beidh an argóint ```ainm ``a chuirtear chuig an modh seo glan cheana féin chuig ainm comhaid atá bailí don chóras stórála, de réir an mhodha ``get_valid_name ()``` a thuairiscítear thuas.

Ní rachaidh fad an ainm comhaid thar max\_length , má chuirtear ar fáil. \<django.core.exceptions.SuspiciousOperation\>Mura féidir ainm comhaid uathúil saor in aisce a fháil, ardaítear eisceacht a: exc: SuspiciousFileOperation .

Má tá comhad le ```ainm ``ann cheana féin, tugtar ``get_alternative_name ()``` chun ainm malartach a fháil.

## Úsáid d'inneall stórála saincheaptha

Is é an chéad chéim chun do stóráil saincheaptha a úsáid le Django ná insint do Django faoin gcúltaca stórála comhaid a bheidh á úsáid agat. Déantar é seo ag baint úsáide as an socrú:setting: STORAGES. Déanann an socrú seo mapáil ainmneacha stórála, ar bealach iad chun tagairt a dhéanamh do stóráil ar leith ar fud Django, chuig foclóir socruithe don chúlcheann stórála sonrach sin. Déantar cur síos iomlán ar na socruithe sna foclóirí istigh sa doiciméadach:setting: STORAGES.

Ansin déantar rochtain ar stórálaí ag ainm ón bhfoclóir:data: django.core.files.storage.storages:

```
from django.core.files.storage import storages

example_storage = storages["example"]
```
