Укажите ссылки на скачивание файлов в результатах блокнота iJulia.
Я хотел бы создать файл данных, который загружается пользователем, либо автоматически, либо по гиперссылке.
Например, есть ли эквивалент этого подхода iPython для iJulia?
3 ответа
Я перевела с оригинала FileLink
определение к джулии:
type FileLink
file_path::ByteString
end
type FileLinks
links::Vector{FileLink}
end
FileLinks(paths::Vector{ByteString}) = FileLinks(map(FileLink,paths))
function Base.writemime(st::IO, ty::MIME"text/html", fl::FileLink)
write(st, "<a href=$(fl.file_path) target='_blank'>$(fl.file_path)</a>")
end
function Base.writemime(st::IO, ty::MIME"text/html", file_links::FileLinks)
for fl in file_links.links
Base.writemime(st, ty, fl)
write(st,"<br>")
end
end
FileLinks(readdir("."))
Работает на локальном сервере IJulia/IPython/Jupyter, но у вас могут быть проблемы с удаленными серверами (например, Sage).
Если я правильно понимаю ваш вопрос, вы хотите автоматически сгенерировать ссылку в Jupyter Notebook, чтобы люди могли ее скачать? Если это так, я делаю это в Vega.jl (чтобы люди могли загружать PNG-файлы графиков) с помощью следующего:
window.setTimeout(function() {
var pnglink = document.getElementById(\"$divid\").getElementsByTagName(\"canvas\")[0].toDataURL(\"image/png\")
document.getElementById(\"$divid\").insertAdjacentHTML('beforeend', '<br><a href=\"' + pnglink + '\" download>Save as PNG</a>')
}, 20);
https://github.com/johnmyleswhite/Vega.jl/blob/master/src/render.jl#L65-L69
По сути, этот код находит div, в котором находится вывод (который известен во время выполнения кода Джулии, до того, как вывод будет обработан), а затем автоматически генерирует ссылку HTML с представлением base64 PNG. В зависимости от вашего контента, это, очевидно, может отличаться (так как .toDataURL
метод должен иметь ваш тип файла в методе).
Использование NBViewer для обслуживания ноутбуков Jupyter статически работает и с IJulia.
Как показано на его домашней странице:
В этом примере я даю NBViewer ссылку на одну из моих записных книжек IJulia, которая размещена в Gist, обратите внимание, что GitHub / Gist теперь также отображает блокноты Jupyter: