Как написать файл nt:file программноJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как написать файл nt:file программно

Сообщение Anonymous »

Я пытаюсь сохранить двоичные данные в JCR, который создается «на лету». Моя проблема в том, что единственный способ, предоставляемый JCR API, — через InputStream:

Код: Выделить всё

Session session = request.getResourceResolver().adaptTo(Session.class);
ValueFactory valueFactory = session.getValueFactory();
Binary bin = valueFactory.createBinary(is);
Поскольку CQ/Sling является RESTful, я понимаю, почему это так, поскольку вы обычно получаете сообщение формы или httprequest к другому источнику, где у вас всегда есть InputStream< /код> для использования. Но в моем случае я создаю двоичный файл на лету, который обычно представляется как OutputStream.
  • Есть ли какой-нибудь другой способ, который я упустил в API JCR, где я мог создать OutputStream непосредственно на узле nt:file, точно так же, как FileOutputStream?
  • Если нет, есть ли простой способ преобразовать OutpuStream во InputStream?
Я знаю, что доступен другой способ из Apache Commons IOUtils.copy(). Я видел несколько примеров на SO, где они просто используют ByteArrayOutputStream.toByteArray() для создания InputStream. Но поскольку данные могут стать довольно большими, это не лучшее решение. Кроме того, я попробовал, но почему-то поток был неполным, поэтому, похоже, существует ограничение на буфер. Следующий подход был с конвейерными потоками, но у меня есть другие проблемы, из-за которых я открыл еще один вопрос: множественные кавычки приводят к сбою PipedOutputStream/OutputStreamWriter

EDIT:
Удален пример кода PipedStream, поскольку я опубликовал проблему с ним в другом вопросе. Итак, я все еще ищу простой способ создать файл nt:file, в котором входные данные не являются входным потоком.

Подробнее здесь: https://stackoverflow.com/questions/271 ... mmatically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»