Вопрос: как я могу использовать выходной файл, хранящийся на сервере OpenCPU, в качестве входных данных для другой функции?
Предыстория: я пытаюсь использовать knitr
и markdown
в openCPU для создания HTML-кода, который я могу использовать для обновления веб-страницы со статистической информацией о загрузке страницы.
Основной рабочий процесс выглядит следующим образом:
- Создайте файл .Rmd, сохраните локально.
- Получите доступ к веб-странице, которая использует AJAX для загрузки файла .Rmd в экземпляр OpenCPU на сервере.
- Используйте функцию
knit
через openCPU, чтобы превратить функцию в файл *.md, хранящийся на сервере. - Используйте функцию
markdownToHTML
для файла, хранящегося на сервере (путем передачи соответствующего хэша, сгенерированного при вызовеknit
), и получите ответ AJAX, содержащий сгенерированный HTML. - Обновите веб-страницу с помощью нового HTML.
В нынешнем виде этот процесс работает до шага 4. Я могу вызвать knit
, передав файл .Rmd через POST-запрос формы, и получаю следующий ответ от OpenCPU:
{
"object" : "xa9eaea44e1",
"graphs" : [
"xf31dcfe7f3"
],
"files" : {
"figure" : "xfc55396fd8",
"test.md" : "x7821c69f79"
}
}
где "test.md"
— выходной файл, сгенерированный функцией knit
. Теперь я пытаюсь использовать хэш (в данном случае "x7821c69f79"
, отправив сообщение POST в /R/pub/markdown/markdownToHTML/ascii
со следующими параметрами:
file /R/tmp/x7821c69f79/bin
Это возвращает ошибку HTTP 400
со следующим сообщением:
cannot open URL 'http://localhost/R/store/R/tmp/x7821c69f79/bin/rds'
Однако, когда я делаю запрос GET к /R/tmp/x7821c69f79/bin
, возвращается содержимое test.md
. Итак, я знаю, что файл сохраняется правильно при вызове knit
.
Итак, что здесь происходит? Другими словами, как я могу использовать выходной файл, хранящийся на сервере OpenCPU, в качестве входных данных для другой функции?