# 56. fotoğraf yükle

S3 aracılığıyla bir fotoğraf yükleme 2 adımdan oluşur:

1. **Daha sonra doğrudan yükleme için ön imzalı bağlantıyı talep edin.**&#x20;

Girdi olarak:&#x20;

* fileExtention - jpeg VEYA jpg VEYA png,&#x20;
* farmUuid - çiftliğin uuid'si,
* fieldUuid - tarlanın uuid'si,
* noteUuid - yüklenen fotoğrafın doğrudan bağlantısı için notun uuid'si,
* commentUuid - yüklenen fotoğrafın doğrudan bağlantısı için yorumun uuid'si (isteğe bağlı).&#x20;

Çıktı olarak:

* uuid - yükleme ve işleme sonrasında beklenen uuid,
* farmUuid - giriş ile aynı,
* fieldUuid - giriş ile aynı,
* noteUuid - giriş ile aynı,
* commentUuid - giriş ile aynı (varsa),
* s3Url - fotoğrafı yüklemek için kullanılan URL,
* s3Fields - fotoğraf yükleme formunda gönderilecek öznitelikler.

s3Url ve s3Fields'in nasıl kullanılacağına dair ayrıntılar ikinci adımda açıklanmıştır.&#x20;

Öznitelikler yalnızca fotoğrafı yüklemek için 60 dakika boyunca geçerlidir.

{% code overflow="wrap" lineNumbers="true" %}

```graphql
mutation generatePresignedPostPhotoData {
  generatePresignedPostPhotoData(input:{
    farmUuid: "89196056-61e5-4bce-b676-d488d611a829" 
    fieldUuid: "586a2ef2-03e4-4715-846c-07a2f0cb3016"
    noteUuid: "4a94da1c-f655-4f17-961a-4b0323e5129c"
    fileExtention: jpeg
    
  } ) {
    uuid
    noteUuid
    fieldUuid
    farmUuid
    s3Url
    s3Alanlar
  }
}
```

{% endcode %}

2. **Yerel bir fotoğrafı s3Fields'teki ön tanımlı form öznitelikleri ile s3Url'ye gönderin.**

{% code overflow="wrap" lineNumbers="true" %}

```bash
curl --location --request POST '<s3Url>' \
--form 'key="<s3Alanlar_icerisindeki_deger>"' \
--form 'AWSAccessKeyId="<s3Alanlar_icerisindeki_deger>"' \
--form 'x-amz-security-token="<s3Alanlar_icerisindeki_deger>"' \
--form 'policy="<s3Alanlar_icerisindeki_deger>"' \
--form 'signature="<s3Alanlar_icerisindeki_deger>"' \
--form 'file=@"<yerel_dosya_yolu>"'
```

{% endcode %}

İşleme ile ilgili bildirimler GraphQL -> Örnekler -> bölümünde açıklanan abonelik mekanizmasıyla iletilecektir. [1. Abonelik: Olayları al](/geopard-tutorials/tr/api-belgeleri/geopard-api-isteklerine-genel-bakis/1.-abonelik-olaylari-getir.md).

{% hint style="info" %}
‘Accept-Encoding’:’gzip, deflate, br’ kullanın.
{% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.geopard.tech/geopard-tutorials/tr/api-belgeleri/geopard-api-isteklerine-genel-bakis/56.-fotograf-yukle.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
