Merhaba,


Bu yazıda Yandex Disk'e Postman ve sunucu üzerinden dosya yükleme işlemini anlatacağım.


Kısaca bahsetmem gerekirse Yandex Disk; text, resim, video, sql vb. her türlü dosyayı saklayabileceğiniz bir bulut ortamıdır. Kullanmak için elbette ilk olarak bir Yandex üyeliği oluşturmak gerekiyor. Bunun için şu linki kullanabilirsiniz. 10 GB ücretsiz bir alan bulunduğunu da belirtmek isterim.


Postman üzerinden dosya yükleme işlemi


Yandex Disk'e Postman üzerinden dosya yüklemek için Yandex.Disk REST API'yi kullanacağız. Bunun için gerekli adımlar şu şekilde;


1. Yandex üyeliğimizi alıp giriş yaptıktan sonra https://oauth.yandex.com/ linkine giderek bir client (istemci) oluşturuyoruz. Bunun için;

  • Create new client butonuna basıyoruz.
  • App name kısmına bir isim giriyoruz (ben örnek olarak test yazdım).
  • Platforms kısmından Web services'i seçip Set URL for development butonuna basıyoruz.
  • Permissions kısmından Yandex.Disk REST API'ye basıp açılan kısımdaki 4 tane seçeneği de seçiyoruz. Böylece bu client'ın Yandex Disk üzerinde okuma yazma işlemi yapmasına izin verdiğimizi belirtiyoruz.
  • Create app butonuna basıp işlemi tamamlıyoruz.
  • Karşımıza çıkan ekrandaki ID ve Password değerlerini not ediyoruz (Sonradan yine ulaşabiliriz ancak sıradaki adımda ihtiyacımız olacak).


2. https://oauth.yandex.com/authorize?response_type=code&client_id=xxx linkine giderek (linkin sonundaki xxx yerine 1.adımdaki ID yazılacak) Allow butonuna basıyoruz ve Verification code değerini elde ediyoruz. Sıradaki adımda kullanmak üzere bu kodu not ediyoruz.


3. Şimdi access_token'a ulaşmamız gerekiyor. Postman'i açarak şu şekilde bir istek yapıyoruz:

Url: https://oauth.yandex.com/token

Metod: POST

Parametreler: (Body kısmında x-www-form-urlencoded şeklinde)

  • client_id: (1.adımdaki ID değeri)
  • client_secret: (1.adımdaki Password değeri)
  • grant_type: authorization_code
  • code: (2.adımdaki Verification code değeri)

Send butonuna basarak isteği yaptıktan sonra bize token_type, access_token, expires_in ve refresh_token değerleri dönüyor. access_token değerini sıradaki adımda kullanmak üzere not ediyoruz.


4. Şimdi de dosya upload işlemini yapacağımız linke(href) ulaşmamız gerekiyor. Bunun için yine Postman'i açarak şu şekilde bir istek yapıyoruz:

Url: https://cloud-api.yandex.net/v1/disk/resources/upload?path=test.txt (Buradaki test.txt yerine siz upload edeceğiniz dosyaya vereceğiniz adı yazabilirsiniz)

Metod: GET

Header: Key: Authorization, Value: OAuth xxx (3.adımdaki access_token değeri)

Send butonuna basarak isteği yaptıktan sonra bize operation_id, href, method ve templated değerleri dönüyor. href değerini sıradaki adımda kullanmak üzere not ediyoruz.


5. Dosya upload işlemini yapacağımız linke 4.adımda ulaştık. Son olarak o linke yine Postman üzerinden şu şekilde bir istek yaparak dosya upload işlemini gerçekleştiriyoruz:

Url: (4.adımdaki href değeri)

Metod: PUT

Parametreler: (Body kısmında binary şeklinde dosyayı seçiyoruz)

Send butonuna basarak isteği yaptıktan sonra dosyamız Yandex Disk üzerine upload edilmiş oluyor.


Sunucu üzerinden dosya yükleme işlemi


Yandex Disk'e sunucu üzerinden dosya yüklemek için şu adımları takip etmemiz gerekiyor:


1. Sunucuya ssh ile erişim sağlıyoruz. Sıradaki adımda ihtiyacımız olacak Json parse işlemi için jq paketini kuruyoruz:

yum install jq


2. Upload etmek istediğimiz dosyanın bulunduğu dizine giderek (ör: /usr/yedekler) bir shell dosyası (ör: test.sh) oluşturuyoruz:

nano test.sh

3. Upload edeceğimiz dosyanın adının ornek_dosya.txt olduğunu varsayıyorum. Buna göre test.sh dosyamızın içeriğini şu şekilde dolduruyoruz:

#/usr/bin/!
file_name = "ornek_dosya.txt"

href = $(curl -s https://cloud-api.yandex.net/v1/disk/resources/upload?path="$file_name" --header "Authorization: OAuth xxx" | jq -r '.href')

curl "$href" --upload-file /usr/yedekler/"$file_name"

Burada yaptığımız işlemler;

  • Dosyamızın adını file_name değişkeninde belirttik.
  • Postman üzerinden upload işlemi kısmındaki 4.adımda bulunan, dosyayı upload edeceğimiz linki (href) elde etme işlemini burada curl ile gerçekleştirdik. curl isteğinde access_token değerimizi (kodda xxx olarak yazdığım kısım) header şeklinde girip, cevap olarak dönen json'ı jq paketiyle parse ederek href'e ulaştık.
  • Son olarak bu elimizdeki linke (href) curl ile dosya upload (--upload-file) isteğinde bulunarak, dosyamızı Yandex Disk'e gönderdik.


Umarım yararlı olmuştur.


İyi çalışmalar.