Я использую Jackrabbit Standalone 2.18.1. Есть ли возможность получить прямую ссылку на файл для дальнейшего использования? E.x. http://127.0.0.1:8887/rmi/myFile
. Будет хорошо, если я смогу получить прямую ссылку после сохранения файла. Может мне стоит сменить конфигурацию крольчонка?
Вот как я сохраняю файл.
void saveImage(MultipartFile imageFile) throws RepositoryException, IOException {
Repository remoteRepository = new URLRemoteRepository("http://127.0.0.1:8887/rmi");
Session jackrabbitSession = remoteRepository.login(new SimpleCredentials("adm", "adm".toCharArray());
Node rootNode = jackrabbitSession.getRootNode();
Node docNode = rootNode .addNode(imageFile.getOriginalFilename(), NT_FILE);
Node contentNode = docNode.addNode(JCR_CONTENT, NT_RESOURCE);
Binary binary = rootNode.getSession().getValueFactory().createBinary(imageFile.getInputStream());
contentNode.setProperty(JCR_DATA, binary);
contentNode.setProperty(JCR_MIME_TYPE, imageFile.getContentType());
contentNode.setProperty(JCR_LAST_MODIFIED, Calendar.getInstance());
rootNode.getSession().save();
}
И вот как я читаю файл:
InputStream readImage(String path) {
... //same connection stuff
Node docNode = rootNode .getSession().getNode(path);
Node contentNode = docNode.getNode(JCR_CONTENT);
Value value = contentNode.getProperty(JCR_DATA).getValue();
InputStream stream = value.getBinary().getStream();
return stream;
}
В случае, если это имеет значение:
private static final String JCR_CONTENT = "jcr:content";
private static final String JCR_DATA = "jcr:data";
private static final String JCR_MIME_TYPE = "jcr:mimeType";
private static final String JCR_LAST_MODIFIED = "jcr:lastModified";
private static final String NT_RESOURCE = "nt:resource";
private static final String NT_FILE = "nt:file";