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

Node.js上传xlsx文件到GCS后跨服务请求无响应如何解决?

问题核心原因

你发送FormData请求时错误配置了请求头,是唯一针对大体积Excel文件触发异常的核心诱因:

你在第二个服务的请求配置中手动设置了Content-Type: application/json,但formData格式的请求必须使用multipart/form-data类型的请求头。小体积的jpg/png文件传输时,服务端可能因为内容长度短出现解析容错,但体积更大的xlsx文件会直接触发解析逻辑失败,导致服务端无响应返回。

可落地的解决方案

按优先级依次调整即可:

  • 第一步:删除请求配置中手动设置的Content-Type头。你使用的request库会自动识别formData参数,自动生成带boundary标识的正确multipart/form-data请求头,无需手动声明。
  • 第二步:补充请求错误逻辑排查。你当前的回调完全没有处理error参数,请求如果出现超时、连接中断、权限错误等问题时无法感知,新增错误打印即可快速定位底层问题。
  • 第三步:调整服务端的请求体积限制。如果Excel文件体积远大于之前测试的图片,检查接收端服务的文件上传大小限制:如果使用express + multer处理FormData,默认单文件大小限制为10MB,超出后会直接中断请求无返回,按需调整limits.fileSize配置即可。
  • 第四步:替换已停止维护的request库。request库2020年已正式停止维护,建议切换为axios、node-fetch等目前活跃维护的请求库,避免老旧版本的未知兼容bug。

调整后的参考代码

getResponse(source, filename, destination, bucket_name, json_url, callback) {
    var formData = {
        file: fs.createReadStream(source),
        filename: filename,
        json_url: json_url,
        destination: destination,
        bucket_name: bname
    }
    var options = {
        'method': 'POST',
        'url': endpoint_of_another_server,
        'headers': {
            'api_key': key
            // 移除手动设置的Content-Type,交由request自动生成
        },
        formData: formData,
        timeout: 30000 // 新增30秒超时避免请求无限挂起
    }
    console.log("I AM RUNNING TILL HERE")
    request(options, function (error, response) {
        // 新增错误处理逻辑
        if (error) {
            console.error("请求异常:", error)
            return callback(JSON.stringify({success: 0, err: error.message}))
        }
        console.log("WE ARE GETTING SOME RESPONSE " + response);
        return callback(response.body);
    })
}

内容的提问来源于stack exchange,提问作者Rakesh Saini

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 00:24:03