Имя: Пароль:
1C
 
WebDAV api Яндекса и 1С
0 Fuas4
 
11.10.16
14:57
Господа, я написал код, который выгружает файлы на Яндекс диск. В тонком клиенте он замечательно работает, но в вебе, если файл больше 100мБ выдает ошибку "недостаточно памяти" http://prntscr.com/csgy4k На компе памяти достаточно, да и в тонком все отлично выгружается. Подскажите мне, откуда возникает это ограничение и как его обойти?
Сам код (исполняется на сервере):
    Для каждого стр из ПомещаемыеФАйлы Цикл
        Расш = ВзаимодействияКлиентСервер.ПолучитьРасширениеФайла(Стр.Имя);
        
        Имя = ПолучитьИмяВременногоФайла(Расш);
         ДвоичныеДанные = ПолучитьИзВременногоХранилища(стр.Хранение);
              ДвоичныеДанные.Записать(Имя);
              Файл = новый файл(Имя);
            ИмяДляЗАписи =  Файл.Имя;
         x = Новый ComОбъект("Microsoft.XMLHTTP");

        x.Open("PUT","https://webdav.yandex.ru/"+ИмяДляЗАписи,1);  // третий параметр: 0-синхронный запрос, 1 - асинхронный

        x.setRequestHeader("Host", "webdav.yandex.ru");

        x.setRequestHeader("Accept", "*/*");
x.setRequestHeader("Authorization", "OAuth "+"Токен");
        //

        s = Новый ComОбъект("ADODB.Stream");

        s.Mode = 3;

        s.Type = 1;

        s.Open();

        s.LoadFromFile(Имя);    
        ПрочитанныйФайл = s.Read();
        x.Send(ПрочитанныйФайл);


В вебе падает на последней строчке: x.Send(ПрочитанныйФайл);
1 Fuas4
 
11.10.16
15:04
Если у кого-то есть код без Com Объекта, я буду ему очень рад
2 AceVi
 
11.10.16
15:08
(0) за такое название переменных поубивал бЫ.
3 Fuas4
 
11.10.16
15:09
(2) это все, что есть по существу?
4 Mauser
 
11.10.16
15:33
(1)
HTTPСоединение (HTTPConnection)
Записать (Put)

Синтаксис:
Записать(<HTTPЗапрос>)

Параметры:
<HTTPЗапрос> (обязательный)
Тип: HTTPЗапрос.
HTTP-запрос.

Возвращаемое значение:
Тип: HTTPОтвет.

Описание:
Используется для отправки данных на HTTP-сервер с помощью PUT-запроса.

Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение(клиент), мобильное приложение(сервер).


Начинай радоваться?
5 Fuas4
 
11.10.16
15:36
(4) ты через этот put делал обмен с яндексом?
6 Mauser
 
11.10.16
15:42
(5) В чем различие?
7 Mauser
 
11.10.16
15:43
Например, от owncloud?
8 Fuas4
 
11.10.16
15:47
(6) ни в чем, но у меня не взлетало. Впрочем, попробую еще раз
9 Mauser
 
11.10.16
15:49
(8) Детали давай, где не взлетело
10 Fuas4
 
11.10.16
15:54
(9) Вспомнил, по http у меня все взлетело, мне не нравилось, что Записать файл на Яд нельзя асинхронно. Чтоб юзер работал, пока файл грузится. Есть какая-то возможность обойти? Через СОМ там как раз оно без юзера работало
11 Fuas4
 
11.10.16
15:59
(9) 150 мб около 10 минут. Не вариант так работать :)
12 Mauser
 
11.10.16
16:06
(10) Только фоновое задание на сервере, откуда растут дырки с сервера в интернет и прочее.
Ну, или поле хтмл документа на клиенте со скриптом и разгребать "особенности" доступа к файловой системе
13 Fuas4
 
11.10.16
16:08
(12) тоже склоняюсь к фоновому заданию. Но тут получается, что я пишу файл в базу, фоновое задание передает его на ЯД и удаляет из базы. Много телодвижений, но, похоже, это меньшее из зол
14 Mauser
 
11.10.16
16:15
(13) Если писать в базу а из базы выпихивать регламентным, то внезапно получишь возможность переживать падение сеанса.
Ну и плюс запись в базу, которая рядом, куда быстрее для клиента чем выпихивание наружу.
15 Fuas4
 
11.10.16
16:18
(14) согласен, спасибо за помощь
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн