Я использую пакет FileField sqlalchemy-file для сохранения файлов в локальном хранилище, он сохраняется, но не позволяет указать собственное имя файла, автоматически сохраняет файл как безымянный. Мне нужно это исправить.
Я работаю над проектом FastAPI и использую файловую переменную, как показано ниже, для сохранения файлов.
from sqlalchemy_file import FileField
class UserDoc(Base):
__tablename__ = "user_doc"
id = Column(Integer, primary_key=True)
file = Column(FileField)
вот как я сохраняю файл
@router.post(
"doc_upload"
)
async def document_upload(
user_file: UploadFile = File(...),
db: Session = Depends(deps.get_db),
):
try:
# code logic
file_contents = await user_file.read()
document_data = {"file": file_contents}
db_document = UserDocument(**document_data)
db.add(db_document)
db.commit()
db.refresh(db_document)
except Exception as _:
# exception logic
содержимое файла хранится в базе данных как
{
"content_path":null,
"filename":"unnamed",
"content_type":"application/octet-stream",
"size":267226,
"files":[
"upload_folder/121e7cbf-f19c-4538-8fcf-2f323f31e53e"
],
"file_id":"121e7cbf-f19c-4538-8fcf-2f323f31e53e",
"upload_storage":"upload_folder",
"uploaded_at":"2024-04-19T05:21:35.429745",
"path":"upload_folder/121e7cbf-f19c-4538-8fcf-2f323f31e53e",
"url":"/base_path/upload_folder/121e7cbf-f19c-4538-8fcf-2f323f31e53e",
"saved":true
}
поэтому, когда я пытаюсь загрузить файл, который мне дает безымянный, я хочу сохранить его под именем.






Вы должны использовать sqlalchemy_file.File лайк File(content=file_contents, filename = "some file name here")
Внесите изменения в то, что у вас уже есть.
from sqlalchemy_file import File
file_contents = await user_file.read()
document_data = {"file": File(content=file_contents, filename = "some file name here")}
db_document = UserDocument(**document_data)
db.add(db_document)
db.commit()