Как RApache форсирует загрузку PDF с помощью R

Я пытаюсь использовать 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"

2 ответа

Решение

Если вы когда-нибудь сталкивались с этим вопросом, вот ответ.

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))

Наслаждайтесь!

Вы распечатываете строку "/public_html/upload/rpdf.pdf" так как это в кавычках. Вы хотите напечатать содержимое файла, а не имя файла в вашем cat() вызов. Возможно, вы могли бы использовать write?

Другие вопросы по тегам