Skip to content

Commit 9166528

Browse files
authored
feat: File URL adaptation (#3459)
1 parent 471ac59 commit 9166528

File tree

8 files changed

+55
-23
lines changed

8 files changed

+55
-23
lines changed

apps/application/models/application.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ class Application(AppModelMixin):
7373
model_params_setting = models.JSONField(verbose_name="模型参数相关设置", default=dict)
7474
tts_model_params_setting = models.JSONField(verbose_name="模型参数相关设置", default=dict)
7575
problem_optimization = models.BooleanField(verbose_name="问题优化", default=False)
76-
icon = models.CharField(max_length=256, verbose_name="应用icon", default="/ui/favicon.ico")
76+
icon = models.CharField(max_length=256, verbose_name="应用icon", default="./favicon.ico")
7777
work_flow = models.JSONField(verbose_name="工作流数据", default=dict)
7878
type = models.CharField(verbose_name="应用类型", choices=ApplicationTypeChoices.choices,
7979
default=ApplicationTypeChoices.SIMPLE, max_length=256)

apps/maxkb/urls.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,10 @@
4141
path(admin_api_prefix, include("knowledge.urls")),
4242
path(admin_api_prefix, include("system_manage.urls")),
4343
path(admin_api_prefix, include("application.urls")),
44+
path(admin_api_prefix, include("oss.urls")),
4445
path(chat_api_prefix, include("chat.urls")),
45-
path('oss/', include('oss.urls')),
46+
path(f'{admin_ui_prefix[1:]}/', include('oss.retrieval_urls')),
47+
path(f'{chat_ui_prefix[1:]}/', include('oss.retrieval_urls')),
4648
]
4749
urlpatterns += [
4850
path('schema/', SpectacularAPIView.as_view(), name='schema'), # schema的配置文件的路由,下面两个ui也是根据这个配置文件来生成的

apps/oss/retrieval_urls.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# coding=utf-8
2+
"""
3+
@project: MaxKB
4+
@Author:虎虎
5+
@file: retrieval_urls.py
6+
@date:2025/7/2 19:01
7+
@desc:
8+
"""
9+
from django.urls import re_path
10+
11+
from . import views
12+
13+
app_name = 'oss'
14+
15+
urlpatterns = [
16+
re_path(rf'^(.*)/oss/file/(?P<file_id>[\w-]+)/?$',
17+
views.FileRetrievalView.as_view()),
18+
re_path(rf'oss/file/(?P<file_id>[\w-]+)/?$',
19+
views.FileRetrievalView.as_view()),
20+
21+
]

apps/oss/serializers/file.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def upload(self, with_valid=True):
6767
file_id = meta.get('file_id', uuid.uuid7())
6868
file = File(id=file_id, file_name=self.data.get('file').name, meta=meta)
6969
file.save(self.data.get('file').read())
70-
return f'/oss/file/{file_id}'
70+
return f'./oss/file/{file_id}'
7171

7272
class Operate(serializers.Serializer):
7373
id = serializers.UUIDField(required=True)

apps/oss/urls.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,5 @@
55
app_name = 'oss'
66

77
urlpatterns = [
8-
path('file', views.FileView.as_view()),
9-
path('file/<str:file_id>', views.FileView.Operate.as_view()),
8+
path('oss/file', views.FileView.as_view()),
109
]

apps/oss/views/file.py

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,20 @@
1212
from oss.serializers.file import FileSerializer
1313

1414

15+
class FileRetrievalView(APIView):
16+
@extend_schema(
17+
methods=['GET'],
18+
summary=_('Get file'),
19+
description=_('Get file'),
20+
operation_id=_('Get file'), # type: ignore
21+
parameters=FileGetAPI.get_parameters(),
22+
responses=FileGetAPI.get_response(),
23+
tags=[_('File')] # type: ignore
24+
)
25+
def get(self, request: Request, file_id: str):
26+
return FileSerializer.Operate(data={'id': file_id}).get()
27+
28+
1529
class FileView(APIView):
1630
authentication_classes = [TokenAuth]
1731
parser_classes = [MultiPartParser]
@@ -31,17 +45,7 @@ def post(self, request: Request):
3145
return result.success(FileSerializer(data={'file': request.FILES.get('file')}).upload())
3246

3347
class Operate(APIView):
34-
@extend_schema(
35-
methods=['GET'],
36-
summary=_('Get file'),
37-
description=_('Get file'),
38-
operation_id=_('Get file'), # type: ignore
39-
parameters=FileGetAPI.get_parameters(),
40-
responses=FileGetAPI.get_response(),
41-
tags=[_('File')] # type: ignore
42-
)
43-
def get(self, request: Request, file_id: str):
44-
return FileSerializer.Operate(data={'id': file_id}).get()
48+
authentication_classes = [TokenAuth]
4549

4650
@extend_schema(
4751
methods=['DELETE'],

ui/src/api/image.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { Result } from '@/request/Result'
22
import { get, post, del, put } from '@/request/index'
33

4-
const prefix = '/image'
4+
const prefix = '/oss/file'
55
/**
66
* 上传图片
77
* @param 参数 file:file
@@ -11,5 +11,5 @@ const postImage: (data: any) => Promise<Result<any>> = (data) => {
1111
}
1212

1313
export default {
14-
postImage
14+
postImage,
1515
}

ui/vite.config.ts

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,6 @@ export default defineConfig((conf: any) => {
4040
target: 'http://127.0.0.1:8080',
4141
changeOrigin: true,
4242
}
43-
proxyConf['/oss'] = {
44-
target: 'http://127.0.0.1:8080',
45-
changeOrigin: true,
46-
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
47-
}
4843
proxyConf['/chat/api'] = {
4944
// target: 'http://47.92.195.88:8080/',
5045
target: 'http://127.0.0.1:8080',
@@ -65,6 +60,17 @@ export default defineConfig((conf: any) => {
6560
changeOrigin: true,
6661
rewrite: (path: string) => path.replace(ENV.VITE_BASE_PATH, '/'),
6762
}
63+
64+
// 前端静态资源转发到本身
65+
proxyConf[`^${ENV.VITE_BASE_PATH}.+\/oss\/file\/.*$`] = {
66+
target: `http://127.0.0.1:8080`,
67+
changeOrigin: true,
68+
}
69+
// 前端静态资源转发到本身
70+
proxyConf[`^${ENV.VITE_BASE_PATH}oss\/file\/.*$`] = {
71+
target: `http://127.0.0.1:8080`,
72+
changeOrigin: true,
73+
}
6874
// 前端静态资源转发到本身
6975
proxyConf[ENV.VITE_BASE_PATH] = {
7076
target: `http://127.0.0.1:${ENV.VITE_APP_PORT}`,

0 commit comments

Comments
 (0)