feat(file-upload): add support for optional file source parameter (#9554)

This commit is contained in:
-LAN-
2024-10-21 17:46:24 +08:00
committed by GitHub
parent 65e22bb76a
commit 8d8a8fe295
3 changed files with 23 additions and 10 deletions

View File

@@ -2,7 +2,7 @@ import datetime
import hashlib
import uuid
from collections.abc import Generator
from typing import Union
from typing import Literal, Union
from flask_login import current_user
from werkzeug.datastructures import FileStorage
@@ -28,7 +28,9 @@ PREVIEW_WORDS_LIMIT = 3000
class FileService:
@staticmethod
def upload_file(file: FileStorage, user: Union[Account, EndUser]) -> UploadFile:
def upload_file(
file: FileStorage, user: Union[Account, EndUser], source: Literal["datasets"] | None = None
) -> UploadFile:
# get file name
filename = file.filename
if not filename:
@@ -36,11 +38,9 @@ class FileService:
extension = filename.split(".")[-1]
if len(filename) > 200:
filename = filename.split(".")[0][:200] + "." + extension
# read file content
file_content = file.read()
# get file size
file_size = len(file_content)
if source == "datasets" and extension not in DOCUMENT_EXTENSIONS:
raise UnsupportedFileTypeError()
# select file size limit
if extension in IMAGE_EXTENSIONS:
@@ -52,6 +52,11 @@ class FileService:
else:
file_size_limit = dify_config.UPLOAD_FILE_SIZE_LIMIT * 1024 * 1024
# read file content
file_content = file.read()
# get file size
file_size = len(file_content)
# check if the file size is exceeded
if file_size > file_size_limit:
message = f"File size exceeded. {file_size} > {file_size_limit}"