我想生成一个由用户自动或通过超链接下载的数据文件。
例如,iJulia是否有this iPython approach的等价物?
答案 0 :(得分:2)
如果我正确理解您的问题,您是否希望在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(在Julia代码运行时,在呈现输出之前已知),然后使用PNG的base64表示自动生成HTML链接。根据您的内容,这显然可能不同(因为.toDataURL
方法必须在方法中包含您的文件类型。)
答案 1 :(得分:2)
我从原始的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)的问题。
答案 2 :(得分:1)
使用NBViewer为Jupyter笔记本提供静态服务也适用于IJulia。
如其主页所示:
在这个例子中,我给NBViewer一个我在Gist中托管的IJulia笔记本的链接,注意GitHub / Gist现在也渲染了Jupyter noteboks: