upload, list and delete files
This commit is contained in:
parent
52513c10df
commit
f5786a446f
@ -19,9 +19,11 @@ def create_api():
|
||||
|
||||
from .abl.user import user
|
||||
from .abl.playlist import playlist
|
||||
from .abl.file import file
|
||||
|
||||
app.register_blueprint(user, url_prefix='/api/user')
|
||||
app.register_blueprint(playlist, url_prefix='/api/playlist')
|
||||
app.register_blueprint(file, url_prefix='/api/file')
|
||||
|
||||
from .models import User, Playlist, PlaylistFile, File
|
||||
|
||||
|
42
src/api/abl/file.py
Normal file
42
src/api/abl/file.py
Normal file
@ -0,0 +1,42 @@
|
||||
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)
|
@ -10,7 +10,10 @@ class PlaylistFile(db.Model):
|
||||
class File(db.Model):
|
||||
id = db.Column(db.Integer, primary_key = True)
|
||||
name = db.Column(db.String(150))
|
||||
type = db.Column(db.String(15))
|
||||
type = db.Column(db.String(255)) # maximum length of mimetype
|
||||
|
||||
def as_dict(self):
|
||||
return {c.name: getattr(self, c.name) for c in self.__table__.columns}
|
||||
|
||||
class Playlist(db.Model):
|
||||
id = db.Column(db.Integer, primary_key = True)
|
||||
|
Loading…
Reference in New Issue
Block a user