2016-03-02 54 views

回答

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

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服务器上,但你可能有与远程服务器(例如鼠尾草)的问题。