|
@@ -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}"
|