quivr [Bug]: 文件名中的非拉丁字母被剥离

ki0zmccv  于 6个月前  发布在  其他
关注(0)|答案(1)|浏览(62)

发生了什么?
文件名中的非ASCII字符被移除。

这是由于使用文件名作为存储上传的键导致的,https://github.com/QuivrHQ/quivr/blob/main/backend/modules/upload/service/upload_file.py#L81,并且上传键受到限制。因此,由于supabase/storage#133,Quivr会删除非ASCII字符。我尝试修复它,但对结果不满意。我认为在original_file_name表中添加knowledge列并通过uuid识别文件上传是值得的。WDYT?
相关日志输出

  • 无响应*

Twitter / LinkedIn详细信息

  • 无响应*
wgx48brx

wgx48brx1#

original_file_name 列添加到 knowledge 表并通过UUID识别文件上传以保留文件名中的非ASCII字符的解决方案似乎合理。这种方法允许您在存储原始文件名(包括任何非ASCII字符)的同时,使用UUID进行识别,从而确保唯一性并避免文件名中的特殊字符问题。
以下是如何修改 Knowledge 类以包含 original_file_name 的方法:

from typing import Optional
from uuid import UUID

from pydantic import BaseModel

class Knowledge(BaseModel):
    id: UUID
    brain_id: UUID
    file_name: Optional[str] = None
    original_file_name: Optional[str] = None  # Added column for original file name
    url: Optional[str] = None
    extension: str = "txt"

此更改将允许您在使用 file_name 字段存储原始文件名(包括非ASCII字符)的同时,使用 knowledge 表的 SQL 模式更新为 original_file_name 列。
此外,您还需要更新 knowledge 表的 SQL 模式以包含 x1m7n1x 列:

CREATE TABLE IF NOT EXISTS knowledge (
  id UUID DEFAULT gen_random_uuid() PRIMARY KEY,
  file_name TEXT,
  original_file_name TEXT,  -- Added column for original file name
  url TEXT,
  brain_id UUID NOT NULL REFERENCES brains(brain_id),
  extension TEXT NOT NULL,
  CHECK ((file_name IS NOT NULL AND url IS NULL) OR (file_name IS NULL AND url IS NOT NULL))
);

这确保了数据库模式与应用程序代码中的更改保持一致。

  • 要继续与 Dosu 进行对话,请提及 @dosu。*

相关问题