在iJulia笔记本结果中提供文件下载链接

在iJulia笔记本结果中提供文件下载链接,julia,jupyter,ijulia-notebook,Julia,Jupyter,Ijulia Notebook,我想生成一个由用户自动或通过超链接下载的数据文件 例如,是否有iJulia的等价物?如果我正确理解您的问题,您希望在Jupyter笔记本中自动生成链接,以便人们可以下载?如果是这样的话,我可以在Vega.jl中通过以下方式实现这一点(这样人们就可以下载图形的PNG文件): window.setTimeout(function() { var pnglink = document.getElementById(\"$divid\").ge

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


例如,是否有iJulia的等价物?

如果我正确理解您的问题,您希望在Jupyter笔记本中自动生成链接,以便人们可以下载?如果是这样的话,我可以在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);
window.setTimeout(函数(){
var pnglink=document.getElementById(\“$divid\”).getElementsByTagName(\“canvas\”)[0]。toDataURL(\“image/png\”)
document.getElementById(\“$divid\”).insertAdjacentHTML('beforeend','
')) }, 20);


基本上,这段代码会找到输出所在的div(在输出呈现之前,Julia代码运行时已知),然后自动生成一个带有PNG base64表示形式的HTML链接。根据您的内容,这显然可能有所不同(因为
.toDataURL
方法中必须包含您的文件类型)。

我将原始定义翻译为julia:

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("."))
键入FileLink
文件路径::ByteString
结束
键入文件链接
链接::向量{FileLink}
结束
文件链接(路径::向量{ByteString})=文件链接(映射(文件链接,路径))
函数Base.writemime(st::IO,ty::MIME“text/html”,fl::FileLink)
写(st,“”)
结束
函数Base.writemime(st::IO,ty::MIME“text/html”,文件链接::文件链接)
对于文件_links.links中的fl
基本写入时间(st、ty、fl)
写(st,“
”) 结束 结束 文件链接(readdir(“.”)

可以在本地托管的IJulia/IPython/Jupyter服务器上工作,但远程服务器(例如Sage)可能会出现问题。

使用NBViewer静态地为Jupyter笔记本提供服务也可以在IJulia上工作

如其主页所示:

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