You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:01:22