43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from flask import Blueprint, request, jsonify, send_file
|
|
from ..models import File
|
|
from .. import db
|
|
|
|
file = Blueprint('file', __name__)
|
|
FILE_DIR = './data/'
|
|
|
|
@file.route('/', methods=['POST'])
|
|
def upload():
|
|
files = request.files.getlist('file')
|
|
for file in files:
|
|
exists = db.session.query(File).filter(File.name == file.filename).first()
|
|
print(file)
|
|
if not exists:
|
|
file.save(FILE_DIR + file.filename)
|
|
new_file = File(name=file.filename, type=file.mimetype)
|
|
db.session.add(new_file)
|
|
|
|
db.session.flush()
|
|
db.session.commit()
|
|
return jsonify({'message': 'File uploaded successfully'})
|
|
|
|
@file.route('/', methods=['GET'])
|
|
def list():
|
|
files = db.session.query(File).all()
|
|
res = []
|
|
for file in files:
|
|
res.append(file.as_dict())
|
|
return jsonify(res)
|
|
|
|
@file.route('/<int:file_id>', methods=['GET'])
|
|
def load(file_id):
|
|
file = db.session.query(File).filter(File.id == file_id).first()
|
|
return send_file(('../../data/' + file.name), mimetype=file.type)
|
|
|
|
@file.route('/<int:file_id>', methods=['DELETE'])
|
|
def delete(file_id):
|
|
rows = db.session.query(File).filter(File.id == file_id).all()
|
|
for row in rows:
|
|
db.session.delete(row)
|
|
db.session.commit()
|
|
return jsonify(success=True)
|