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

如何在Plumber API中接收POST请求体中的两个CSV文件?

解决Plumber API接收并解析两个CSV文件的问题

你的基础代码框架是正确的,使用@parser multipart/form-data是处理文件上传的正确选择。下面是具体的完善步骤和代码示例:

核心要点说明

  • parser_csv适用于请求体本身就是纯CSV内容的场景(比如请求头Content-Type: text/csv),而你当前是通过表单上传文件,所以不需要用它,继续使用multipart/form-data解析器即可。
  • req$files中的每个文件对象包含临时文件路径($tempfile),你需要通过这个路径读取CSV内容为数据框。

完善后的代码

#* Process two CSV files in the request body
#* @post /process_files
#* @parser multipart/form-data
function(req, res) {
  # 验证文件数量
  if (is.null(req$files) || length(req$files) < 2) {
    res$status <- 400
    res$body <- '{"error": "Two CSV files must be included in the request."}'
    return()
  }
  
  # 获取文件对象
  file1 <- req$files$file1
  file2 <- req$files$file2
  
  # 验证文件是否为CSV(可选但建议)
  if (!grepl("\\.csv$", file1$filename, ignore.case = TRUE)) {
    res$status <- 400
    res$body <- '{"error": "file1 must be a valid CSV file."}'
    return()
  }
  if (!grepl("\\.csv$", file2$filename, ignore.case = TRUE)) {
    res$status <- 400
    res$body <- '{"error": "file2 must be a valid CSV file."}'
    return()
  }
  
  # 读取CSV为数据框并捕获解析错误
  tryCatch({
    df1 <- read.csv(file1$tempfile, stringsAsFactors = FALSE)
    df2 <- read.csv(file2$tempfile, stringsAsFactors = FALSE)
  }, error = function(e) {
    res$status <- 400
    res$body <- paste0('{"error": "Failed to parse CSV files: ', e$message, '"}')
    return()
  })
  
  # 这里编写你的数据处理逻辑
  # 示例:返回两个文件的行数统计
  process_result <- list(
    file1_rows = nrow(df1),
    file2_rows = nrow(df2),
    message = "Files processed successfully."
  )
  
  # 返回JSON格式结果
  res$status <- 200
  res$body <- jsonlite::toJSON(process_result, auto_unbox = TRUE)
}

Postman请求设置

  1. 选择POST请求,URL填写你的Plumber接口地址(比如http://localhost:8000/process_files)。
  2. 切换到Body标签,选择form-data类型。
  3. 添加两个键值对:
    • 第一个key设为file1,类型选择File,然后选择本地的CSV文件。
    • 第二个key设为file2,同样选择File并上传第二个CSV文件。
  4. 发送请求即可。

内容的提问来源于stack exchange,提问作者Akram HECINI

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 23:42:22