【问题标题】:How RApache force a pdf download by using RRApache 如何使用 R 强制下载 pdf
【发布时间】:2012-05-16 07:14:54
【问题描述】:

我正在尝试使用 R 和 RApache 下载 pdf 文件,但没有成功。

这是我的代码

#R-Downwload pdf
#---------------------------------------------
pdf("/public_html/upload/rpdf.pdf")
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("PDF Report")
dev.off()

setContentType(type='application/pdf')
setHeader(header='Content-Disposition', 'attachment; filename=rpdf.pdf')
setHeader(header='Content-Transfer-Encoding', 'binary')
setHeader(header='Accept-Ranges', 'bytes')

cat("/public_html/upload/rpdf.pdf")

当我在浏览器上运行此代码时,它会显示下载弹出框,但是当我单击下载时会显示

... either not a supported file type or it has been damaged"

【问题讨论】:

    标签: apache r rapache


    【解决方案1】:

    如果你遇到这个问题,这里就是答案。

    setHeader(header='Content-Disposition', 'attachment; filename=rpdf.pdf')
    setContentType("application/pdf")
    t <- tempfile()
    pdf(t)
    attach(mtcars)
    plot(wt, mpg)
    abline(lm(mpg~wt))
    title("PDF Report")
    dev.off()
    setHeader('Content-Length',file.info(t)$size)
    sendBin(readBin(t,'raw',n=file.info(t)$size))
    

    享受吧!

    【讨论】:

    • 您能否详细说明此解决方案为何有效,以及您的原始代码中缺少什么?
    【解决方案2】:

    您正在打印字符串"/public_html/upload/rpdf.pdf",因为它在引号中。您想打印文件的内容,而不是cat() 调用中的文件名。也许你可以使用write

    【讨论】:

      猜你喜欢
      • 2012-02-23
      • 2012-05-21
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      相关资源
      最近更新 更多