MinIO Object name contains unsupported characters

源码

java 复制代码
protected void validateObjectName(String name) {
    // 调用 validateNotEmptyString 方法,确保对象名不为空字符串
    validateNotEmptyString(name, "object name");

    // 使用 "/" 分割对象名,检查每个分段
    for (String token : name.split("/")) {
        // 如果分段为 "." 或 "..",抛出 IllegalArgumentException
        if (token.equals(".") || token.equals("..")) {
            throw new IllegalArgumentException(
                "object name with '.' or '..' path segment is not supported");
        }
    }
}

问题原因使用了 File.separator,它在不同的操作系统上会生成不同的分隔符(例如,在 Windows 上是 \,在 Linux 上是 /)。MinIO 使用的是基于 URL 的路径,因此需要使用 / 作为分隔符。

你可以将代码中的 File.separator 替换为 /,以确保路径格式正确。修改后的代码如下:

java 复制代码
filename = "chat"
        + "/" + userId
        + "/" + "photo"
        + "/" + IdUtil.fastSimpleUUID() + "." + FileUtil.extName(file.getOriginalFilename());

这样可以确保生成的文件路径在 MinIO 中是有效的。

相关推荐
曹牧12 小时前
SpringBoot: @RequestBody String
java
爱划水不秃头的程序员12 小时前
堆 栈 和常量池的关系是啥 是jvm对他们进行的划分吗
java
周GZ12 小时前
4个提问,deepseek讲解Java中的线程池
java
LuTshoes12 小时前
context 上下文工程
java·人工智能·spring·ai
wuminyu12 小时前
Markword在紧凑对象头上的实现原理剖析
java·linux·c语言·jvm·c++
君顾113 小时前
24小时自助健身房系统开发实战与完整指南
java·开发语言·健身房
千舟软件13 小时前
【宿舍管理小程序】新生入住不靠纸质表
大数据·运维·服务器·科技·业界资讯
鹿角片ljp13 小时前
LeetCode 78:子集|回溯、选与不选、递归和path快照
java·数据结构·算法
志尊宝13 小时前
Vue3 零基础每日笔记(032):Suspense 与异步组件——懒加载与顶层 await 终极方案
前端·javascript·vue.js·笔记·html5
Alice-YUE13 小时前
前端速通 Agent:5 个项目,一条学习路径
前端·大模型·ai agent·学习路径·deerflow