Skip to content

Commit 363ed50

Browse files
committed
feat: 新增文件上传API
1 parent ba6e9dc commit 363ed50

4 files changed

Lines changed: 51 additions & 0 deletions

File tree

app/api/cms/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@ def create_cms():
1313
from .admin import admin_api
1414
from .user import user_api
1515
from .log import log_api
16+
from .file import file_api
1617
from .test import test_api
1718
admin_api.register(cms)
1819
user_api.register(cms)
1920
log_api.register(cms)
21+
file_api.register(cms)
2022
test_api.register(cms)
2123
return cms

app/api/cms/file.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
"""
2+
:copyright: © 2019 by the Lin team.
3+
:license: MIT, see LICENSE for more details.
4+
"""
5+
from flask import request
6+
from lin import login_required
7+
from lin.exception import Success
8+
from lin.redprint import Redprint
9+
10+
from app.extensions.file.local_uploader import LocalUploader
11+
12+
file_api = Redprint('file')
13+
14+
15+
@file_api.route('/', methods=['POST'])
16+
@login_required
17+
def post_file():
18+
files = request.files
19+
uploader = LocalUploader(files)
20+
uploader.upload()
21+
return Success()

app/extensions/file/config.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
# 文件相关配置
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import os
2+
3+
from werkzeug.utils import secure_filename
4+
5+
from lin.core import File
6+
from lin.file import Uploader
7+
8+
9+
class LocalUploader(Uploader):
10+
11+
def upload(self, **kwargs):
12+
ret = dict(file_storage=self._file_storage, file=[])
13+
for single in self._file_storage:
14+
secure_filename(single.filename)
15+
name = self._generate_uuid() + self._get_ext(single)
16+
full_path = os.path.join(self._store_dir, name)
17+
single.save(full_path)
18+
file = File.create_file(
19+
name=name,
20+
path=full_path,
21+
_type=1,
22+
extension=self._get_ext(single),
23+
size=self._get_size(single),
24+
commit=True
25+
)
26+
ret['file'].append(file)
27+
return ret

0 commit comments

Comments
 (0)