Рубрики
Без рубрики

Онлайн хранилище с колбой!

Вы хотите онлайн-хранилище, сделанную самостоятельно для хранения? Ну вот мы! Онлайн… Теги с колбой, Python, WebDev, приложением.

Ну вот мы! Онлайн хранение с нашей прекрасной колбой!

Как эта работа?

Таким образом, этот проект был всем о служебном файле с колбой и научитесь сделать какой-то HTTP-запрос!

Требования

  1. Колбы
  2. Python 3.7

Рабочее время!

Итак, сначала мы собираемся создавать приложение Flask и импортируйте некоторые вещи!

from random import sample
from string import ascii_letters,digits
from base64 import b64decode
from json import load,dump
import flask

app = flask.Flask("Really Awesome Storage API!")

А также Далее мы какой-то прохладный регистратор для отслеживания пользователей, размещающих и получите некоторые файлы!

def write(ip:str,file:str):
    with open("list.json","r") as i:
        ips = load(i)
        if ip not in list(ips):
            ips[ip] = []
        ips[ip].append(file)
    with open("list.json","w") as i:
        dump(ips,i)
        return True

Таким образом, эта функция займет два ARGS – это IP-адрес пользователя и файл! Теперь давайте напишем URL, который позволит нам загрузить вещи!

@app.route('/save',methods=['POST'])
def save():
    image = b64decode(flask.request.data)
    string = ''.join(sample(ascii_letters+digits,10)) + flask.request.headers.get("extension")
    a = open("stuff/" + string,"wb")
    a.write(image)
    a.close()
    write(flask.request.remote_addr,f"POST {string}")
    return string ,202

Теперь эта функция будет работать, если вы отправитесь на Сохранить уваживание Так что это примет файл, который был базой 64, закодированным в органе отклика, и он собирается создать файл и написать байты после того, как мы закрываем файл и регистрируем файл после этого, мы вернем случайную строку с расширением файла, которое хранилище в нашем Сервер! Теперь давайте напишем путь URI, который отправит файл обратно!

@app.route('/')
def get(pic):
    try:
        a = flask.send_file("stuff/" + pic,as_attachment=True if flask.request.args.get("preview") is not None or flask.request.args.get("preview") == "false" else False)
        write(flask.request.remote_addr,f"GET {pic} FILE ")
    except Exception as e:
        return str(e)
    else:
        return a

Эта функция как-то дольше, чем то, что вы, возможно, ожидали, но мы попробуем эту флюшку отправим файл обратно к пользователю, потому что Flask будет бросать ошибку, если файл не существует, и мы делаем ошибку, и если ошибка поднять ошибку, мы вернемся к странице еще затем вернуть файл! ( Функция отправки файла действительно обескуражен! Пожалуйста, используйте send_from_directory, делая это!

@app.route('/')
def get(pic):
    try:
        a = flask.send_from_directory("stuff",pic)
        write(flask.request.remote_addr,f"GET {pic} FILE ")
    except Exception as e:
        return str(e)
    else:
        return a

Я использую это, потому что у него есть as_attachment АРУДА! ) Это так просто! Теперь давайте напишем клиентский скрипт бокового клиента! Каждый может сделать, чтобы я дам вам этот фрагмент

from requests import post
from base64 import b64encode
from PIL import ImageGrab
from sys import exit
from os import remove
from os.path import splitext
while True:
    choices = input("Screenshot (s) or File (f) or Clipboard Text(ct) or Text (t) or Quit (q)\n")
    if "s" in a or "S" in choices:
        screen = ImageGrab.grabclipboard()
        screen.save("pic.jpg")
        print("Your screenshot is at https://content.biomooping.tk/" + post("yourlink/save",data=b64encode(open("pic.jpg","rb").read()),headers={"extension":splitext("./pic.jpg")[1]}).text)
        remove("pic.jpg")
    elif "f" in a or "F" in choices:
        path = input("Your file path\n")
        print("Your file is at is at https://content.biomooping.tk/" + post("yourlink/save",data=b64encode(open(path,"rb").read()),headers={"extension":splitext(path)[1]}).text)
    elif choices.startswith("ct") or choices.startswith("CT"):
        from clipboard import paste
        print("Your file is at is at https://content.biomooping.tk/" + post("yourlink/save",data=b64encode(paste()),headers={"extension":"txt"}).text)
    elif choices.startswith("T") or choices.startswith("t"):
        print("Your file is at is at https://content.biomooping.tk/" + post("yourlink/save",data=b64encode(bytes(input("Text\n\a"),encoding="utf-8")),headers={"extension":"txt"}).text)
    elif "q" in a or "Q" in choices:
        exit("See you next time!")
    else:
        continue

Это имеет особенность является

  1. Получить скриншот из буфера обмена
  2. Загрузка файлов
  3. Текст буфера обмена (в работе Windows, но другой ОС? я не знаю…..)
  4. Текст

Немного вопроса

Q: Почему кодировка Base64? A: Это простое, что Я знаю

Q: Что вдохновляет вас сделать это? A: Я всегда забываю, какова моя домашняя работа, поэтому я хочу, чтобы зарегистрирован, и я хочу воспроизводить с колбой, а также хочу онлайн-хранилище, размещенное в Интернете. Репозиторий GitHub!

Оригинал: “https://dev.to/dumbstuff/online-storage-with-flask-12k6”