Actual implementation of send_from_directory

This commit is contained in:
2015-10-08 15:06:12 +02:00
parent 362e8faf7b
commit 9e790e3013
2 changed files with 2 additions and 80 deletions

View File

@@ -6,6 +6,7 @@ from flask import request
from flask import Blueprint from flask import Blueprint
from flask import abort from flask import abort
from flask import jsonify from flask import jsonify
from flask import send_from_directory
from application import app from application import app
from application import db from application import db
from application import post_item from application import post_item
@@ -101,7 +102,7 @@ def build_thumbnails(file_path=None, file_id=None):
def index(file_name=None): def index(file_name=None):
#GET file #GET file
if file_name: if file_name:
return file_storage.send_static_file(file_name) return send_from_directory(app.config['STORAGE_DIR'], file_name)
#POST file #POST file
file_name = request.form['name'] file_name = request.form['name']
folder_name = file_name[:2] folder_name = file_name[:2]

View File

@@ -1,79 +0,0 @@
import os
from bson import ObjectId
from flask import request
from application import app
from application import db
from application import post_item
from application.utils.imaging import generate_local_thumbnails
from application.modules.file_storage import file_storage
@file_storage.route('/build_thumbnails/<path:file_path>')
def build_thumbnails(file_path=None, file_id=None):
if file_path:
# Search file with backend "pillar" and path=file_path
file_ = db.files.find({"path": "{0}".format(file_path)})
file_ = file_[0]
if file_id:
file_ = db.files.find_one({"_id": ObjectId(file_id)})
file_path = file_['name']
user = file_['user']
file_full_path = os.path.join(app.config['SHARED_DIR'], file_path)
# Does the original file exist?
if not os.path.isfile(file_full_path):
return "", 404
else:
thumbnails = generate_local_thumbnails(file_full_path,
return_image_stats=True)
for size, thumbnail in thumbnails.iteritems():
if thumbnail.get('exists'):
# If a thumbnail was already made, we just continue
continue
basename = os.path.basename(thumbnail['path'])
root, ext = os.path.splitext(basename)
path = os.path.join(basename[:2], basename)
file_object = dict(
name=root,
#description="Preview of file {0}".format(file_['name']),
user=user,
parent=file_['_id'],
size=size,
format=ext[1:],
width=thumbnail['width'],
height=thumbnail['height'],
content_type=thumbnail['content_type'],
length=thumbnail['length'],
md5=thumbnail['md5'],
filename=basename,
backend='pillar',
path=path)
# Commit to database
r = post_item('files', file_object)
if r[0]['_status'] == 'ERR':
return "", r[3] # The error code from the request
return "", 200
@file_storage.route('/file', methods=['POST'])
@file_storage.route('/file/<path:file_name>')
def index(file_name=None):
#GET file
if file_name:
return file_storage.send_from_directory(app.config['STORAGE_DIR'],
file_name)
#POST file
file_name = request.form['name']
folder_name = file_name[:2]
file_folder_path = os.path.join(app.config['STORAGE_DIR'],
folder_name)
if not os.path.exists(file_folder_path):
os.mkdir(file_folder_path)
file_path = os.path.join(file_folder_path, file_name)
request.files['data'].save(file_path)
return "{}", 200