Перейти к содержанию
Fire Monkey от А до Я
  • 0

Доступ к Yandex.Disk


Rusland

Вопрос

Рекомендуемые сообщения

  • 0

Есть ли готовое решение для доступа к Yandex.Disk?

Есть REST API Диска на Java для Android, Swift для iOS, PHP: https://tech.yandex.ru/disk/rest/

А есть ли что-нибудь для Delphi?

Читал вот тут недавно статейку. Но сам пока не проверял.

Ссылка на комментарий
  • 0

Почитал несколько статей и эту в том числе, в основном показан доступ к чтению списка файлов... а вот как читать/записывать в файл в облаке что-то мало информации

Ссылка на комментарий
  • 0
В 05.07.2017 в 14:26, marsden сказал:

Понимаю, что опоздал почти на два года, но все же, для истории и новичков )))

В Токио заработало.

Еще бы 3 часть статьи про скачивание файла с Яндекс.Диска :) 

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

@marsden В Берлине, в отличии от Токио, у RESTRequest нет метода AddFile. Как это обойти?

 

 

Попробовал скопировать в папку с проектом файлы REST.Client.pas, REST.Types.pas, IPPeerAPI.pas из Токио, при компиляции получаю ошибку:

[dcc32 Fatal Error] IPPeerAPI.pas(1260): F2051 Unit REST.HttpClient was compiled with a different version of IPPeerAPI.IIPMultipartFormDataStream

Изменено пользователем Rusland
Ссылка на комментарий
  • 0

Вот так получаю список файлов:

procedure TForm1.GetFileList();
var
  Link,Mem:String;
  Code:Integer;
begin  
  RESTRequest1.Params.Clear;
  RESTRequest1.Params.Add;

  RESTRequest1.Params[0].Kind:=TRESTRequestParameterKind.pkHTTPHEADER;
  RESTRequest1.Params[0].name:='Authorization';
  RESTRequest1.Params[0].Options:=[poDoNotEncode];
  RESTRequest1.Params[0].Value:='OAuth ' + OAuth2Authenticator1.AccessToken;



  RESTRequest1.AddParameter('path', 'disk:/');  
  RESTRequest1.AddParameter('limit', '100');    //  ограничение списка файлов до 100
  RESTRequest1.AddParameter('media_type', 'video'); // не срабатывает этот фильтр



  RESTRequest1.Resource:='/disk/resources';
  RESTRequest1.Method:=rmGet;
  
  RESTRequest1.Execute;
  if RESTRequest1.Response.StatusCode=200 then begin
    Memo1.Lines.Text:=RESTRequest1.Response.Content;
    // TODO дальше надо бежать по списку и найдя нужный файл скачать его
  end 
  else Memo1.Lines.Add('запрос ссылки - ошибка '+RESTRequest1.Response.StatusCode.ToString);
end;

Почему не срабатывает ограничение 'media_type', 'video' ?

Ссылка на комментарий
  • 0
В 24.07.2017 в 16:18, Rusland сказал:

@marsden В Берлине, в отличии от Токио, у RESTRequest нет метода AddFile. Как это обойти?

 

 

Попробовал скопировать в папку с проектом файлы REST.Client.pas, REST.Types.pas, IPPeerAPI.pas из Токио, при компиляции получаю ошибку:

[dcc32 Fatal Error] IPPeerAPI.pas(1260): F2051 Unit REST.HttpClient was compiled with a different version of IPPeerAPI.IIPMultipartFormDataStream

Лучше поздно, чем никогда) Например так

// RESTRequest1.AddFile(FileName);

 AStream := TMemoryStream.Create();
 AStream.LoadFromFile('D:\1.mp4');   
 RESTRequest1.AddBody(AStream, ctVIDEO_MP4);

Изменено пользователем jornada
Ссылка на комментарий

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...