![]() |
|
Как удалять созданные файлы на сервере в WEB-клиенте? | ☑ | ||
---|---|---|---|---|
0
DES
25.01.21
✎
16:15
|
Клиент загружает файл на сервер, сервер его обрабатывает и формирует файл ответа (при этом создает и удаляет промежуточные временные файлы).
Клиент скачивает файл ответа. Как затем удалить этот файл (из каталога временных файлов) ? По расширению, при входе, удалять нельзя, так как могут существовать еще не скаченные другими клиентами подобные файлы. |
|||
1
Жан Пердежон
25.01.21
✎
16:23
|
какими другими? какому расширению? у тебя полное имя файла есть - его и удаляй
|
|||
2
DES
25.01.21
✎
16:25
|
Не хочет клиент удалять файлы на сервере ни по полному ни по укороченному имени
|
|||
3
DES
25.01.21
✎
16:26
|
А сервер не знает скачал клиент файл и можно ли его грохать.
|
|||
4
acht
25.01.21
✎
16:28
|
(3) А клиент знает - скачал ли он файл?
|
|||
5
DES
25.01.21
✎
16:32
|
нет, но то что начал качать известно
|
|||
6
arsik
гуру
25.01.21
✎
16:32
|
(0) Зачем ты вообще файлы на сервере создаешь? Делай все в памяти, 1с нормально с потоками работает. Отдавай клиенту поток.
|
|||
7
acht
25.01.21
✎
16:36
|
(5) Тогда твоя задача не имеет решение кроме таймаута - вести список файлов и, например, через сутки удалять протухшие.
|
|||
8
fisher
25.01.21
✎
16:37
|
(0) Получается, ты асинхронные запросы реализовал? Клиент периодически проверяет наличие файла-ответа?
|
|||
9
fisher
25.01.21
✎
16:42
|
И файлы ты не через временное хранилище передаешь а как-то иначе?
|
|||
10
DES
25.01.21
✎
16:47
|
Асинхронно, 8.3.18
(7) да , была мысля так сделать, надеялся что есть фича какая то. |
|||
11
fisher
25.01.21
✎
17:08
|
(10) Клиентом файл скачивается каким способом?
|
|||
12
Kassern
25.01.21
✎
17:17
|
(0) давай людям ссылку на скачивание и предупреждай что она будет доступна в течении Nого времени. По прошествии этого времени удаляй файл регламентно.
|
|||
13
acht
25.01.21
✎
17:30
|
(12) > 8.3.18
НачатьПолучениеФайловССервера Вариант синтаксиса: Без диалога Синтаксис: НачатьПолучениеФайловССервера(<ОписаниеОповещенияОЗавершении>, <ПолучаемыеФайлы>, <БазовыйКаталог>, <ПараметрыПолученияАрхиваФайлов>) Параметры: <ОписаниеОповещенияОЗавершении> (необязательный) Тип: ОписаниеОповещения. Содержит описание процедуры, которая будет вызвана после завершения со следующими параметрами: <ПолученныеФайлы> – массив объектов типа ОписаниеПереданногоФайла. <ДополнительныеПараметры> – значение, которое было указано при создании объекта ОписаниеОповещения. |
|||
14
acht
25.01.21
✎
17:31
|
Так что в (5) ты наврад
|
|||
15
acht
25.01.21
✎
17:31
|
л =)
|
|||
16
Жан Пердежон
25.01.21
✎
17:51
|
(13) он вообще нигде ни разу не сказал, как он файлы получает, но ни в одном из способов такой проблемы быть не должно (если специально не постараться)
|
|||
17
acht
25.01.21
✎
18:00
|
(16) Ды я вообще думал, что это не в 1С
|
|||
18
DES
25.01.21
✎
19:50
|
Вопрос не в способе передачи, а в зачистке мусора.
|
|||
19
DES
25.01.21
✎
19:51
|
использую
ПолучитьФайлССервераАсинх(АдресХранилища, РезультатФайлXLS, ПараметрыДиалога) |
|||
20
DES
25.01.21
✎
20:08
|
А как изменить каталогвременныхфайлов сервера ?
чтобы не использовалось c:\windows\temp |
|||
21
DES
25.01.21
✎
20:20
|
(13) Это требует установки расширения в браузер. Не хотелось бы.
|
|||
22
Garykom
гуру
25.01.21
✎
21:18
|
(0) хранить статус скачивания файла, обновлять его, скачанные по прошествии времени удалять
|
|||
23
acht
25.01.21
✎
23:41
|
(20) > каталогвременныхфайлов сервера ?
(21) > расширения в браузер. Ты определись там - клиент, сервер... |
|||
24
acht
25.01.21
✎
23:45
|
(21)+ Ты точно читал СП, или выборочно проглядел?
|
|||
25
fisher
26.01.21
✎
10:41
|
(19) Может, я чего-то не понимаю. Но почему ты не прибиваешь временный файл сразу после помещения его во временное хранилище?
|
|||
26
DES
26.01.21
✎
12:00
|
(25)
если так делаю то он не скачивается &НаСервере Функция ПолучитьАдресФайлаДляСкачивания() Перем ВремХран; ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS)); //УдалитьФайлыАсинх(РезультатФайлXLS); Возврат ВремХран; КонецФункции |
|||
27
DES
26.01.21
✎
12:02
|
&НаКлиенте
Процедура ВыполнитьДействиеЗавершение(Результат, ДополнительныеПараметры) Экспорт Если Результат = Неопределено Тогда Возврат; КонецЕсли; Если Результат.Статус="Выполнено" Тогда РезультатФайлXLS = ПолучитьИзВременногоХранилища(Результат.АдресРезультата); ЭтаФорма.Элементы.НадписьПояснение.Заголовок = "Выполнено."; ЭтаФорма.Элементы.НадписьПояснение.ЦветТекста = WebЦвета.Зеленый; АдресХранилища = ПолучитьАдресФайлаДляСкачивания(); ПараметрыДиалога = Новый ПараметрыДиалогаПолученияФайлов; ПараметрыДиалога.Заголовок = НСтр("ru = 'Выберите путь для сохранения файла'; en = 'Select the path to save the file'"); ПолучитьФайлССервераАсинх(АдресХранилища, СтрЗаменить(ИмяФайлаPDF,".pdf",".xlsx"), ПараметрыДиалога); КонецЕсли; КонецПроцедуры |
|||
28
fisher
26.01.21
✎
12:26
|
(26) ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), УникальныйИдентификатор);
|
|||
29
fisher
26.01.21
✎
12:29
|
"В случае, если передается УникальныйИдентификатор формы или адрес в хранилище, то значение будет автоматически удалено после закрытия этой формы."
"Если параметр не указан, помещенное значение будет удалено после очередного запроса сервера из общего модуля, при контекстном и неконтекстном серверном вызове из формы, при серверном вызове из модуля команды или при получении формы" |
|||
30
DES
26.01.21
✎
14:56
|
(29) УникальныйИдентификатор никак не влияет на РезультатФайлXLS
а мне необходимо удалять файл по адресу РезультатФайлXLS |
|||
31
fisher
26.01.21
✎
15:00
|
(30) Ты не понял. Если ты не привязываешь время жизни временного хранилища ко времени жизни формы (указав уникальный идентификатор формы вторым параметром), то временное хранилище просто "слетает" после вызова УдалитьФайлыАсинх().
|
|||
32
DES
26.01.21
✎
15:38
|
если раскомментирую удаление, то вышибает
На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто &НаСервере Функция ПолучитьАдресФайлаДляСкачивания(РезультатФайлXLS, Уник) //Уник=ЭтаФорма.УникальныйИдентификатор (059aa38a-cd5c-4692-a6ee-18efa17b828c) Перем ВремХран; ВремХран = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(РезультатФайлXLS), Уник); //УдалитьФайлыАсинх(РезультатФайлXLS); Возврат ВремХран; КонецФункции Если делаю //УдалитьФайлыАсинх(РезультатФайлXLS); то все выполняется без ошибок |
|||
33
fisher
26.01.21
✎
15:43
|
(32) "Работа с файлами в асинхронном режиме присутствует только на стороне клиентского приложения. В общем случае следует использовать синхронные методы для работы на стороне сервера и асинхронные ‑ для работы на стороне клиентского приложения."
|
|||
34
fisher
26.01.21
✎
15:46
|
Короче, попробуй просто синхронное УдалитьФайлы()
|
|||
35
DES
26.01.21
✎
15:46
|
(34) верно, ФайлыАсинх(РезультатФайлXLS);
сработало |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |