3

我想生成一个由用户自动或通过超链接下载的数据文件。

例如,对于 iJulia,是否有与这种 iPython 方法等效的方法?

4

3 回答 3

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方法必须在方法中包含您的文件类型)。

于 2016-03-02T14:40:59.353 回答
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)的问题。

于 2016-03-02T17:54:17.837 回答
1

使用 NBViewer 为 Jupyter 笔记本提供静态服务也适用于 IJulia。

如其主页所示:

在此处输入图像描述

在此示例中,我为 NBViewer 提供了托管在 Gist 中的一个 IJulia 笔记本的链接,请注意 GitHub/Gist 现在也呈现 Jupyter 笔记本:

于 2016-03-03T14:44:01.067 回答