92 lines
2.6 KiB
Python
92 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
||
from flask import Blueprint,request,jsonify
|
||
from application import app
|
||
import re,json
|
||
from common.libs.UploadService import UploadService
|
||
from common.libs.UrlManager import UrlManager
|
||
from common.models.Image import Image
|
||
route_upload = Blueprint('upload_page', __name__)
|
||
|
||
'''
|
||
参考文章:https://segmentfault.com/a/1190000002429055
|
||
'''
|
||
|
||
@route_upload.route("/ueditor",methods = [ "GET","POST" ])
|
||
def ueditor():
|
||
|
||
req = request.values
|
||
action = req['action'] if 'action' in req else ''
|
||
|
||
if action == "config":
|
||
root_path = app.root_path
|
||
config_path = "{0}/web/static/plugins/ueditor/upload_config.json".format( root_path )
|
||
with open( config_path,encoding="utf-8" ) as fp:
|
||
try:
|
||
config_data = json.loads( re.sub( r'\/\*.*\*/' ,'',fp.read() ) )
|
||
except:
|
||
config_data = {}
|
||
return jsonify( config_data )
|
||
|
||
if action == "uploadimage":
|
||
return uploadImage()
|
||
|
||
if action == "listimage":
|
||
return listImage()
|
||
|
||
return "upload"
|
||
|
||
@route_upload.route("/pic",methods = [ "GET","POST" ])
|
||
def uploadPic():
|
||
file_target = request.files
|
||
upfile = file_target['pic'] if 'pic' in file_target else None
|
||
callback_target = 'window.parent.upload'
|
||
if upfile is None:
|
||
return "<script type='text/javascript'>{0}.error('{1}')</script>".format( callback_target,"上传失败" )
|
||
|
||
ret = UploadService.uploadByFile(upfile)
|
||
if ret['code'] != 200:
|
||
return "<script type='text/javascript'>{0}.error('{1}')</script>".format(callback_target, "上传失败:" + ret['msg'])
|
||
|
||
return "<script type='text/javascript'>{0}.success('{1}')</script>".format(callback_target,ret['data']['file_key'] )
|
||
|
||
def uploadImage():
|
||
resp = { 'state':'SUCCESS','url':'','title':'','original':'' }
|
||
file_target = request.files
|
||
upfile = file_target['upfile'] if 'upfile' in file_target else None
|
||
if upfile is None:
|
||
resp['state'] = "上传失败"
|
||
return jsonify(resp)
|
||
|
||
ret = UploadService.uploadByFile( upfile )
|
||
if ret['code'] != 200:
|
||
resp['state'] = "上传失败:" + ret['msg']
|
||
return jsonify(resp)
|
||
|
||
resp['url'] = UrlManager.buildImageUrl( ret['data']['file_key'] )
|
||
return jsonify( resp )
|
||
|
||
def listImage():
|
||
resp = { 'state':'SUCCESS','list':[],'start':0 ,'total':0 }
|
||
|
||
req = request.values
|
||
|
||
start = int( req['start']) if 'start' in req else 0
|
||
page_size = int( req['size']) if 'size' in req else 20
|
||
|
||
query = Image.query
|
||
if start > 0:
|
||
query = query.filter( Image.id < start )
|
||
|
||
list = query.order_by( Image.id.desc() ).limit( page_size ).all()
|
||
images = []
|
||
|
||
if list:
|
||
for item in list:
|
||
images.append( { 'url': UrlManager.buildImageUrl( item.file_key ) } )
|
||
start = item.id
|
||
resp['list'] = images
|
||
resp['start'] = start
|
||
resp['total'] = len( images )
|
||
return jsonify( resp )
|
||
|