使用Shiny开发Web应用时遭遇413请求实体过大错误
嘿,这个问题我太熟悉了!出现413 Request Entity Too Large错误,本质就是你的服务器(不管是Shiny Server、RStudio Server还是本地运行的内置服务器)默认的上传文件大小上限比你要传的1.58MB小,直接把请求给拦截了。下面分不同场景给你对应的解决办法:
1. 如果你用的是Shiny Server(开源/Pro版)
得修改Shiny Server的配置文件,通常路径是/etc/shiny-server/shiny-server.conf:
- 用sudo权限打开配置文件:
sudo nano /etc/shiny-server/shiny-server.conf - 在
server或者location代码块里添加client_max_body_size参数,比如设置成10MB(足够覆盖你的1.58MB需求):
server { listen 3838; location / { site_dir /srv/shiny-server; log_dir /var/log/shiny-server; directory_index on; client_max_body_size 10M; # 可按需调整,M代表兆字节,也能用G表示千兆 } }
- 保存修改后重启Shiny Server:
sudo systemctl restart shiny-server
2. 如果你在RStudio Server上运行App
有两种方式可以调整:
方法一:修改RStudio Server的Nginx配置
- 编辑
/etc/rstudio/nginx.conf,找到http块,添加上传大小限制:
http { # 其他配置内容... client_max_body_size 10M; # 其他配置内容... }
- 重启RStudio Server生效:
sudo rstudio-server restart
方法二:在Shiny App代码里单独设置
这个方法更灵活,针对单个App生效,优先级比服务器配置高。在你的App代码最开头加上:
# 设置最大上传大小为10MB(单位是字节,10*1024^2 = 10*1024*1024) options(shiny.maxRequestSize = 10*1024^2)
3. 如果你是本地运行Shiny App(直接在R里启动)
这是最简单的情况,直接在App代码开头设置shiny.maxRequestSize选项就行:
# 先设置最大上传大小,这里设为10MB options(shiny.maxRequestSize = 10*1024^2) ui <- fluidPage( fileInput("file", "选择要上传的文件") ) server <- function(input, output) { # 你的业务逻辑代码 } shinyApp(ui, server)
要是以后需要支持更大的文件,比如50MB,就把数值改成50*1024^2就行。
内容的提问来源于stack exchange,提问作者Mikz
相关产品推荐
相关产品推荐

