У меня есть несколько полезных нагрузок JSON, которые нужно добавить в файл JSON. Вот как будет выглядеть моя полезная нагрузка JSON:
{"variant": {"940894": {"attributes": {"Size": "XL" } } } }
Я буду получать несколько полезных нагрузок json этого типа. В конце мне нужно сформировать файл, который выглядит так:
[
{"variant": {"940894": {"attributes": {"Size": "XL" } } } },
{"variant": {"940895": {"attributes": {"Size": "Med" } } } },
{"variant": {"940895": {"attributes": {"Size": "Small" } } } }
]
Это свойства, которые я установил для требования:
<property expression = "fn:concat('Test',get-property('File_Name'),'.txt')" name = "FILE_NAME" scope = "default"
<propertyGroup description = "File and OutputPayload properties">
<property name = "messageType" scope = "axis2" type = "STRING" value = "text/plain"/>
<property name = "ContentType" scope = "axis2" type = "STRING" value = "text/plain"/>
<property expression = "$ctx:FILE_NAME" name = "transport.vfs.ReplyFileName" scope = "transport" type = "STRING"/>
<property name = "OUT_ONLY" scope = "default" type = "STRING" value = "true"/>
</propertyGroup>
<call>
<endpoint>
<address uri = "vfs:sftp://username:password/home/user/test/out/json?transport.vfs.Append=true">
<suspendOnFailure>
<initialDuration>-1</initialDuration>
<progressionFactor>1</progressionFactor>
</suspendOnFailure>
<markForSuspension>
<retriesBeforeSuspension>0</retriesBeforeSuspension>
</markForSuspension>
</address>
</endpoint>
</call>
Но я получаю сообщение об ошибке: «Тип файла не поддерживает режим добавления». Что еще я могу попробовать здесь.
Но это дает ту же ошибку для каждого типа файла. Я пробовал csv, xml, txt, json.
Работает только в локальной файловой системе. но не в SFTP
Я посмотрел на код, и, как вы уже заметили, протокол SFTP
не позволяет вам делать добавление файлов. Поддерживаемые операции для SFTP
указаны здесь в коде.
Capability.CREATE, Capability.DELETE, Capability.RENAME, Capability.GET_TYPE,
Capability.LIST_CHILDREN, Capability.READ_CONTENT, Capability.URI, Capability.WRITE_CONTENT,
Capability.GET_LAST_MODIFIED, Capability.SET_LAST_MODIFIED_FILE, Capability.RANDOM_ACCESS_READ
Но если вместо этого вы используете протокол FTP
, вы сможете выполнять добавление файлов, поскольку оно поддерживается здесь.
Capability.CREATE, Capability.DELETE, Capability.RENAME,
Capability.GET_TYPE, Capability.LIST_CHILDREN,
Capability.READ_CONTENT, Capability.GET_LAST_MODIFIED,
Capability.URI, Capability.WRITE_CONTENT,
Capability.APPEND_CONTENT, Capability.RANDOM_ACCESS_READ
Добавление работает и с локальной файловой системой.
Если вы хотите добавить файл и по-прежнему использовать SFTP
, вам придется ПРОЧИТАТЬ -> ДОБАВИТЬ -> ЗАПИСАТЬ файл. Или можете подумать о написании посредника пользовательского класса.
Это означает, что файловая система не поддерживает добавление файлов. Можно ли прочитать файл, добавить содержимое и заменить файл?