gpt4 book ai didi

r - 使用 R Markdown 对 CSV 进行 Base64 编码

转载 作者:行者123 更新时间:2023-12-01 23:33:52 28 4
gpt4 key购买 nike

图像的 Base64 编码是 R Studio Markdown 中一个非常酷的小功能,它可以在一个 HTML 页面中创建所有内容,这些页面易于分发或共享。无需担心将图像作为单独的文件。浏览器知道如何处理它。

我还想将此功能扩展到编码 CSV 文件。看看他们现在是怎么做的,看起来他们正在将信息传递给 .Call 并使用 C/C++ 对文件信息进行编码。

来自(第 177 和 192 行):https://github.com/rstudio/markdown/blob/master/R/renderMarkdown.R

.b64EncodeFile <- function(inFile)
{
fileSize <- file.info(inFile)$size

if (fileSize > 0){
paste( "data:", .mimeType(inFile),";base64,",
.Call(rmd_b64encode_data,readBin(inFile,'raw',n=fileSize)),
sep='')
} else {
warning(inFile,'is empty!')
inFile
}
}


.b64EncodeImages <- function(html)
{
reg <- "<\\s*[Ii][Mm][Gg]\\s+[Ss][Rr][Cc]\\s*=\\s*[\"']([^\"']+)[\"']"
m <- gregexpr(reg,html,perl=TRUE)
if (m[[1]][1] != -1)
{
.b64EncodeImgSrc <- function(imgSrc)
{
inFile <- sub(reg,"\\1",imgSrc)
if (length(inFile) && file.exists(inFile))
imgSrc <- sub(inFile,.b64EncodeFile(inFile),imgSrc,fixed=TRUE)

imgSrc
}
regmatches(html,m) <- list(unlist(lapply(regmatches(html,m)[[1]],.b64EncodeImgSrc)))
}

html
}

现在,我如何使用 CSV 文件完成同样的事情?重要的是,我如何让浏览器理解它。

最佳答案

如果我没看错你的意图,如果你用 HREF 属性中的编码数据创建一个 A 元素,那么单击链接将获得该文件。刚刚用我身边的编码图像 block 对此进行了测试:

<a href="data:image/jpeg;base64,[blah blah blah]">Click Me</a>

因此,只要您设置了 MIME 类型(文本/某物?),您所需要做的就是构建该元素并将其粘贴到您的 HTML 文件中。用户单击链接,文件开始下载,从其嵌入的 base64 编码开始。排序。缺少 mime 类型的完整示例,只允许浏览器读取它:

<html>
<head>
</head>
<body>
<h1>Test</h1>
<a href="data:;base64,aWQsbmFtZSxhZ2UKMSwiRnJlZCBGb28iLDk5CjIsIkpvZSBCbG9nZ3MiLDIyCg==">click me</a>
</body>
</html>

数据字符串来自哪里:

> markdown:::.b64EncodeFile("test.csv")
[1] "data:;base64,aWQsbmFtZSxhZ2UKMSwiRnJlZCBGb28iLDk5CjIsIkpvZSBCbG9nZ3MiLDIyCg=="

关于r - 使用 R Markdown 对 CSV 进行 Base64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12208258/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com