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

标签 r

图像的 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/

相关文章:

r - 根据其他列减去该列的最小值

r - Lavaan CFA 与 SEM

arrays - 基本 R : Multiplying elements in 3-D array with loop

r - 提示用户无需等待

r - 合并具有相同名称的列表列表的元素

r - 如何在R中以某种方式获得输出

r - 计算连续数字之间的差异并用于输出到 R 中的另一个数据帧

r - 将应用程序部署到 Shinyapps.io 时出现错误消息

r - 航类数据集的 KNN 错误

删除具有正值的列?