parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Вариант сборки двоичного файла из частей

virusav 28.08 21:40

Добрый день.
Когда нужно иметь возможность заливать большие файлы и не нарваться на лимиты по таймауту и размеру, можно загружать файлы частями, а потом их собирать.

В доке сказано, что:
^файл.save[формат;имя файла;опции] [3.4.0]
Формат - формат сохранения файла (text или binary);
$.append(false|true) - если файл существует, то дописать файл в конец существующего файла; по умолчанию, если файл с указанным именем существует, то он будет перезаписан. [3.4.6]
Где-то на форуме писали, что парсер работает с бинарниками в ограниченном режиме, но для текстовых файлов параметр append тоже не работает:
	$fFile[^file::load[text;data.txt]]
	^fFile.save[text;data1.txt;
		$.append(true)
	]
Получаем:
save
called with invalid option
Написал метод сборки любых файлов:
########################################
# sPartsPath - путь к папке с частями файла
# sSavePath - путь для сохранения собранного файла
@assembleFile[sPartsPath;sSavePath][locals]
	$tParts[^file:list[$sPartsPath]]
	^tParts.menu{
		$fFile[^file::load[binary;$sPartsPath/$tParts.name]]
		$sFileBase64[${sFileBase64}^fFile.base64[]]
	}
	$fFile[^file::base64[binary;1.bin;$sFileBase64]]
	^fFile.save[binary;$sSavePath]
	$result[]
Метод работает, но смущает необходимость перегонять данные в BASE64 туда-обратно вместо использования опции append при сохранении файла.
На текущий момент других вариантов я не знаю.

Может, стоить починить append при сохранении файлов и добавить туда возможность дописывать в бинарники?
Или уже есть аналогичный функционал без танцев с бубном?)