Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
08 дек 2022, 01:48

Как правильно загрузить файл в дропбокс?

Автор gulnyr, 18 окт 2022, 15:05

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Код:

&НаКлиенте
Процедура ДропбоксЗагрузка(Команда)

Токен = "ЗдесьТокен";

ПутьКФайлу = "Приложения/New/ПолноеИмяФайла.txt;

Соединение = Новый HTTPСоединение("content.dropboxapi.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL);     
Запрос = Новый HTTPЗапрос("2/files/upload");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос.Заголовки.Вставить("Content-Type", "application/octet-stream");
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,, ЭкранированиеСимволовJSON.СимволыВнеASCII);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(Запись, Новый Структура("path", "/" + ПутьКФайлу));
Запрос.Заголовки.Вставить("Dropbox-API-Arg", Запись.Закрыть());

Ответ = Соединение.ОтправитьДляОбработки(Запрос);   

ИмяВремФайла = "C:\Users\Пользователь\Desktop\ПолноеИмяФайла.txt";

Если Ответ.КодСостояния = 200 Тогда

    Данные = Ответ.ПолучитьТелоКакДвоичныеДанные();
    Данные.Записать(ИмяВремФайла);
Сообщить(ИмяВремФайла);

КонецЕсли;

КонецПроцедуры

Код состояния выдает 200, только непонятно как указать путь к файлу, чтобы его закачивал в дропбокс. Как его реализовать?   

antoneus

Соединение = Новый HTTPСоединение("content.dropboxapi.com",,,,,, Новый ЗащищенноеСоединениеOpenSSL);
Запрос = Новый HTTPЗапрос("2/files/upload");
Запрос.Заголовки.Вставить("Authorization", "Bearer " + Токен);
Запрос.Заголовки.Вставить("Content-Type", "application/octet-stream");
ПараметрыЗаписи = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет,,, ЭкранированиеСимволовJSON.СимволыВнеASCII);
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку(ПараметрыЗаписи);
ЗаписатьJSON(Запись, Новый Структура("path", ПутьКФайлу));
Запрос.Заголовки.Вставить("Dropbox-API-Arg", Запись.Закрыть());
Запрос.УстановитьТелоИзДвоичныхДанных(Новый ДвоичныеДанные(ЛокальныйПутьКФайлу));

Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Если Ответ.КодСостояния = 200 Тогда
ТелоСтрокой = Ответ.ПолучитьТелоКакСтроку();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТелоСтрокой);
Результат = ПрочитатьJSON(Чтение, Истина);
КонецЕсли;

Так глядишь, потихоньку аналог запилим.

А вообще, на сайте dropbox документация есть, с примерами.

gulnyr

antoneus, когда в ЛокальныйПутьКФайлу указываю адрес: С:\USERS\Пользователь\test.xml, то пишет что каталог не обнаружен, но я проверил, такой каталог есть, экселевский файл тоже открывается. А если указать сетевой адрес: \\SERVER\Users\Пользователь\Desktop\test.xls, то пишет: Ошибка при выполнении файловой операции.

Права тоже проверил, полные.

В чем может быть проблема?

antoneus

А если руками путь выбрать?

gulnyr

antoneus, если руками, то вот такая ошибка: {"error_summary": "path/malformed_path/.", "error": {".tag": "path", "reason": {".tag": "malformed_path"}, "upload_session_id": "pid_upload_session:ABIFh-owohtvT-I9AgumZmd5injVU0Wai7et8LGFeR3fpKm-"}}

antoneus

путь загрузки кривой, видимо. Путь какой в дропбоксе?

gulnyr

antoneus, в дропбоксе вот такой путь: Приложения/SCANEW/, пробовал и так: /Приложения/SCANEW/ и так: Приложения/SCANEW

antoneus

Путь надо вместе с первым слешем и именем файла.

/Приложения/SCANEW/ИмяФайла.xls

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск