Jackrabbit - доступ к файлу по прямой ссылке - PullRequest
0 голосов
/ 14 июня 2019

Я использую 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";
...