Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как удалять созданные файлы на сервере в WEB-клиенте?

Как удалять созданные файлы на сервере в WEB-клиенте?
Я
   DES
 
25.01.21 - 16:15
Клиент загружает файл на сервер, сервер его обрабатывает и формирует файл ответа (при этом создает и удаляет промежуточные временные файлы).
Клиент скачивает файл ответа.
Как затем удалить этот файл (из каталога временных файлов) ?
По расширению, при входе, удалять нельзя, так как могут существовать еще не скаченные другими клиентами подобные файлы.
   Жан Пердежон
 
1 - 25.01.21 - 16:23
какими другими? какому расширению? у тебя полное имя файла есть - его и удаляй
   DES
 
2 - 25.01.21 - 16:25
Не хочет клиент удалять файлы на сервере ни по полному ни по укороченному имени
   DES
 
3 - 25.01.21 - 16:26
А сервер не знает скачал клиент файл и можно ли его грохать.
   acht
 
4 - 25.01.21 - 16:28
(3) А клиент знает - скачал ли он файл?
   DES
 
5 - 25.01.21 - 16:32
нет, но то что начал качать известно
   arsik
 
6 - 25.01.21 - 16:32
(0) Зачем ты вообще файлы на сервере создаешь? Делай все в памяти, 1с нормально с потоками работает. Отдавай клиенту поток.
   acht
 
7 - 25.01.21 - 16:36
(5) Тогда твоя задача не имеет решение кроме таймаута - вести список файлов и, например, через сутки удалять протухшие.
   fisher
 
8 - 25.01.21 - 16:37
(0) Получается, ты асинхронные запросы реализовал? Клиент периодически проверяет наличие файла-ответа?
   fisher
 
9 - 25.01.21 - 16:42
И файлы ты не через временное хранилище передаешь а как-то иначе?
   DES
 
10 - 25.01.21 - 16:47
Асинхронно, 8.3.18
(7) да , была мысля так сделать, надеялся что есть фича какая то.
   fisher
 
11 - 25.01.21 - 17:08
(10) Клиентом файл скачивается каким способом?
   Kassern
 
12 - 25.01.21 - 17:17
(0) давай людям ссылку на скачивание и предупреждай что она будет доступна в течении Nого времени. По прошествии этого времени удаляй файл регламентно.
   acht
 
13 - 25.01.21 - 17:30
(12) > 8.3.18
НачатьПолучениеФайловССервера

Вариант синтаксиса: Без диалога

Синтаксис:
НачатьПолучениеФайловССервера(<ОписаниеОповещенияОЗавершении>, <ПолучаемыеФайлы>, <БазовыйКаталог>, <ПараметрыПолученияАрхиваФайлов>)

Параметры:
<ОписаниеОповещенияОЗавершении> (необязательный)

Тип: ОписаниеОповещения.
Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами:
<ПолученныеФайлы> – массив объектов типа ОписаниеПереданногоФайла.
<ДополнительныеПараметры> – значение, которое было указано при создании объекта ОписаниеОповещения.
   acht
 
14 - 25.01.21 - 17:31
Так что в (5) ты наврад
   acht
 
15 - 25.01.21 - 17:31
л =)
   Жан Пердежон
 
16 - 25.01.21 - 17:51
(13) он вообще нигде ни разу не сказал, как он файлы получает, но ни в одном из способов такой проблемы быть не должно (если специально не постараться)
   acht
 
17 - 25.01.21 - 18:00
(16) Ды я вообще думал, что это не в 1С
   DES
 
18 - 25.01.21 - 19:50
Вопрос не в способе передачи, а в зачистке мусора.
   DES
 
19 - 25.01.21 - 19:51
использую
ПолучитьФайлССервераАсинх(АдресХранилища, РезультатФайлXLS, ПараметрыДиалога)
   DES
 
20 - 25.01.21 - 20:08
А как изменить каталогвременныхфайлов  сервера ?
чтобы не использовалось c:\windows\temp
   DES
 
21 - 25.01.21 - 20:20
(13) Это требует установки расширения в браузер. Не хотелось бы.
   Garykom
 
22 - 25.01.21 - 21:18
(0) хранить статус скачивания файла, обновлять его, скачанные по прошествии времени удалять
   acht
 
23 - 25.01.21 - 23:41
(20) > каталогвременныхфайлов  сервера ?
(21) >  расширения в браузер.
Ты определись там - клиент, сервер...
   acht
 
24 - 25.01.21 - 23:45
(21)+ Ты точно читал СП, или выборочно проглядел?
   fisher
 
25 - 26.01.21 - 10:41
(19) Может, я чего-то не понимаю. Но почему ты не прибиваешь временный файл сразу после помещения его во временное хранилище?
   DES
 
26 - 26.01.21 - 12:00
(25)
если так делаю то он не скачивается
&НаСервере
Функция ПолучитьАдресФайлаДляСкачивания()
    Перем ВремХран;
    
    ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS));
    //УдалитьФайлыАсинх(РезультатФайлXLS);

    Возврат ВремХран;  

КонецФункции
   DES
 
27 - 26.01.21 - 12:02
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт
    
    Если Результат = Неопределено Тогда
        Возврат;
    КонецЕсли;
    Если Результат.Статус="Выполнено" Тогда  
        РезультатФайлXLS = ПолучитьИзВременногоХранилища(Результат.АдресРезультата);
        ЭтаФорма.Элементы.НадписьПояснение.Заголовок = "Выполнено.";
        ЭтаФорма.Элементы.НадписьПояснение.ЦветТекста = WebЦвета.Зеленый;
        АдресХранилища = ПолучитьАдресФайлаДляСкачивания();
        ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов;
        ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to save the file'");
        ПолучитьФайлССервераАсинх(АдресХранилища, СтрЗаменить(ИмяФайлаPDF,".pdf",".xlsx"), ПараметрыДиалога);
    КонецЕсли;
    
КонецПроцедуры
   fisher
 
28 - 26.01.21 - 12:26
(26) ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), УникальныйИдентификатор);
   fisher
 
29 - 26.01.21 - 12:29
"В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы."
"Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы"
   DES
 
30 - 26.01.21 - 14:56
(29) УникальныйИдентификатор никак не влияет на РезультатФайлXLS
а мне необходимо удалять файл по адресу РезультатФайлXLS
 
 Рекламное место пустует
   fisher
 
31 - 26.01.21 - 15:00
(30) Ты не понял. Если ты не привязываешь время жизни временного хранилища ко времени жизни формы (указав уникальный идентификатор формы вторым параметром), то временное хранилище просто "слетает" после вызова УдалитьФайлыАсинх().
   DES
 
32 - 26.01.21 - 15:38
если раскомментирую удаление, то вышибает 
На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто

&НаСервере
Функция ПолучитьАдресФайлаДляСкачивания(РезультатФайлXLS, Уник)//Уник=ЭтаФорма.УникальныйИдентификатор (059aa38a-cd5c-4692-a6ee-18efa17b828c)

   Перем ВремХран;
    
    ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), Уник);
    //УдалитьФайлыАсинх(РезультатФайлXLS);

    Возврат ВремХран;  
    
КонецФункции

Если делаю//УдалитьФайлыАсинх(РезультатФайлXLS); то все выполняется без ошибок
   fisher
 
33 - 26.01.21 - 15:43
(32) "Работа с файлами в асинхронном режиме присутствует только на стороне клиентского приложения. В общем случае следует использовать синхронные методы для работы на стороне сервера и асинхронные ‑ для работы на стороне клиентского приложения."
   fisher
 
34 - 26.01.21 - 15:46
Короче, попробуй просто синхронное УдалитьФайлы()
   DES
 
35 - 26.01.21 - 15:46
(34) верно, ФайлыАсинх(РезультатФайлXLS);
сработало


Список тем форума
Рекламное место пустует  Рекламное место пустует
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Э. Йодан
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.