小白菜吃兔子 2024-02-29 09:26 采纳率: 72.5%
浏览 15

nginx服务器传file遇到问题

首先,java后台是没有问题的,因为我用postman测试过,向后台传文件时处理是没有问题的。
但是用nginx服务器部署前端项目时,发送excel文件到后台处理时会报400错误,
文件很小只有10k,不考虑nginx的文件上传大小限制。
然后就是别的请求都可以正常通信,就是前端的文件处理有问题。
nginx服务器的错误日志完全没有错误。
附一段前端接口代码:

  confirmUpload() { //确认上传
    var file = new FormData();
    this.fileList.forEach((val) => {
          file.append("file", val.raw);
          console.log(val.raw);
        }
    );
    console.log(file)
    axios.post("/weixin/excelimport", file)
        .then((res) => {
          if(res.data.state == 200){
            data.dialoglist = res.data.pidlist;
            ElMessage({
              message: '读取成功',
              type: 'success',
            })
            data.dialogOfUpload = false
            data.addpid=true
          }else {
            ElMessage({
              message: '读取失败',
              type: 'error',
            })
          }
        }).catch(error => {
      console.log(error);
    });

  },
  • 写回答

3条回答 默认 最新

  • 檀越@新空间 2024-02-29 09:26
    关注

    小白菜吃兔子 上午好☀️☀️☀️️
    本答案参考通义千问

    问题分析:

    1. Java后台处理文件没有问题,意味着问题可能出在前端或Nginx服务器的配置上。
    2. Nginx服务器没有错误日志说明可能不是服务器端的问题。
    3. 文件大小很小,排除了文件大小限制的可能性。

    解决方案:

    1. 检查前端代码:

      • 确保FormData对象的构建正确。前端代码中,你需要确保file对象的键名与后端接口定义的键名一致。这里可能是file而不是file[]excel
      • 使用FormData时,检查val.raw是否为有效的文件数据,如果不是,可能是文件选择器的问题。

      修改后的代码:

      confirmUpload() {
        var file = new FormData();
        this.fileList.forEach((val) => {
          file.append("excel", val.raw); // 更改键名为"excel"
          console.log(val.raw);
        });
        console.log(file)
        axios.post("/weixin/excelimport", file)
            ...
      }
      
    2. 检查Nginx配置:

      • 查看Nginx配置中的POST请求相关设置,确保允许文件上传。
      • 检查location块中是否正确处理了multipart/form-data类型的请求。
      • 如果使用的是location块,确保匹配了正确的URL路径。
    3. 检查axios配置:

      • 确保axios.post的配置没有错误,如Content-Type设置为multipart/form-data
      • 确认URL路径和请求头是否正确。
    4. 增加前端日志:

      • axios.postthencatch回调中添加更多的日志信息,以便更好地定位问题。
    5. 检查后端日志:

      • 虽然Nginx服务器没有错误,但尝试在后端服务器的日志中查看是否有更多关于请求处理的信息。
    6. 使用浏览器开发者工具:

      • 在发送请求时,检查网络面板,查看请求的Content-TypeContent-Length等信息,以确认是否符合预期。

    总结:

    • 检查前端FormData构建
    • 确认Nginx配置文件处理multipart/form-data
    • 调整axios配置
    • 增加日志信息以便定位问题
    • 检查后端日志
    • 使用开发者工具分析请求细节
    评论

报告相同问题?

问题事件

  • 创建了问题 2月29日