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

Flutter使用Dio向Ubuntu服务器上传文件时遇405状态码错误求助

解决Flutter Dio上传文件返回405错误的思路

405错误的核心是服务器不允许当前请求方法(POST)访问目标URL,可以从以下几个方向排查:

  • 确认服务器端的上传端点配置
    检查Ubuntu服务器上的后端服务(比如Nginx路由规则、后端框架的接口定义),确保你请求的URL(http://h4053796.stratoserver.net)支持POST方法。多数情况下,根路径默认只处理GET请求,你需要使用后端专门定义的上传接口路径(比如/upload)。

  • 修正FormData参数
    你的代码里FormData包含files: filePath这个本地路径字符串,服务器大概率不需要这个参数,容易导致解析异常。建议去掉该参数;同时强制指定filename: 'upload.jpg'可能不符合实际文件类型,改成动态获取原文件名更稳妥。

  • 验证请求URL正确性
    确认服务器上是否存在处理文件上传的具体接口,比如后端可能提供的是http://h4053796.stratoserver.net/api/upload这类路径,而非直接请求根域名。

修改后的示例代码:

class FileUploader {
  static Future uploadFile({String? filePath}) async {
    try {
      if (filePath == null) return;
      // 动态获取原文件名
      final fileName = filePath.split('/').last;
      final formData = FormData.fromMap({
        'name': 'dio',
        'date': DateTime.now().toIso8601String(),
        'file': await MultipartFile.fromFile(filePath, filename: fileName),
      });
      // 替换为服务器实际的上传接口路径
      final response = await Dio().post('http://h4053796.stratoserver.net/upload', data: formData);
      print(response.data);
    } catch (e) {
      print(e);
    }
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 08:22:38