Ejemplo n.º 1
0
def medias(filename=None):
    if request.method == "GET":
        media = Media.get_media(filename=filename)
        if not media:
            abort(404)
        return send_from_directory(current_app.config["UPLOAD_FOLDER"],
                                   media.filename)

    elif request.method == "POST":
        f = request.files["files[]"]
        if not f:
            return

        filename = f.filename
        # save file to local folder, if file exists, delete it
        filepath = os.path.join(current_app.config['UPLOAD_FOLDER'], filename)
        if os.path.exists(filepath):
            os.remove(filepath)
        f.save(filepath)
        filesize = os.stat(filepath).st_size

        now = datetime.now()
        # if file with same name exists, replace it
        media = Media.get_one(Media.filename == filename)
        if not media:
            media = Media(filename=filename)
        media.fileid = hashlib.sha256(filename.encode("utf-8")).hexdigest()
        media.size = filesize
        media.content_type = f.content_type
        media.size = filesize
        media.create_time = now
        media.save()
        return jsonify({"files": []})

    elif request.method == "DELETE":
        removelist = request.json
        for eachfile in removelist:
            fileid = eachfile["fileid"]
            filename = eachfile["filename"]
            onemedia = Media.get_one(Media.fileid == fileid)
            if onemedia.filename != filename:
                continue

            # remove file from folder
            try:
                os.remove(
                    onemedia.filepath(current_app.config["UPLOAD_FOLDER"]))
            except Exception:
                pass
            # remove file from database
            onemedia.delete_instance()
        return jsonify(success=True, message="success")