首頁  >  文章  >  後端開發  >  使用Python實作一個簡單的圖片上傳儲存服務

使用Python實作一個簡單的圖片上傳儲存服務

高洛峰
高洛峰原創
2017-03-16 15:51:502637瀏覽

GitHub網址: https://github.com/honmaple/maple-file

使用flask實現的一個簡單的圖片上傳服務

設計初衷

對於圖片的儲存,有很多選擇,一般採用雲端服務如(七牛,又拍等),但是國內的服務像七牛
自訂網域竟然需要網域備案(Excuse me,當初就是因為備案麻煩才選擇國外的),而且浪費了我十塊錢,

而我又想像七牛一樣可以直接在本地就可以上傳圖片,找來找去,沒有找到一個比較合適的,所以花兩天時間自己寫了一個

使用

由於初衷是本地腳本就可以發布,所以沒有前端介面,等以後有時間了再加上

# API

  • /api/login

    • #POST

      登录
  • /api/logout

    • #GET

      注销
  • /api/albums

    • name 相簿名稱

    • description 相簿描述

    • #GET
      取得相簿清單

    • POST
      新相簿

  • /api /albums/

    pk 相簿ID

    • name 相簿名稱

    • #description 相簿描述

    • GET
      取得相簿資訊

    • PUT
      修改相簿資訊

    • #DELETE
      刪除相簿

  • #/api/images

    • images 上傳圖片清單

    • album 相簿ID(預設會新建一個default相簿)

    • #GET
      取得圖片清單

    • POST
      #已上傳圖片

  • /api/images/

    • #name 圖片名稱

    • ##description 圖片描述

    • GET

      取得圖片資訊

    • PUT

      修改圖片資訊

    • DELETE

      刪除圖片

配置

class Config(object):
    DEBUG = True # 生产环境设置为False
    SECRET_KEY = 'ccc' # import os;os.urandom(24)
    SECRET_KEY_SALT = 'ssss'
    JSON_AS_ASCII = False

    PERMANENT_SESSION_LIFETIME = timedelta(days=3)

    PER_PAGE = 10 # 分页
    ADMIN_URL = '/admin/aaaaa' # 后台地址

    LOGIN_TOKEN_HEADER = 'Api-Key' # 将会影响到后面headers设置
    LOGIN_TOKEN = 'api_key' #url?api_key=21312313

    MIDDLEWARE = ['storage.common.middleware.CommonMiddleware']

    SQLALCHEMY_TRACK_MODIFICATIONS = False
    SQLALCHEMY_DATABASE_URI = 'sqlite:///test.db'
    # SQLALCHEMY_ECHO = DEBUG
    UPLOAD_ALLOWED_EXTENSIONS = set(['png', 'jpg', 'jpeg']) # 允许上传的扩展名
    UPLOAD_FOLDER_ROOT = os.path.dirname(os.path.abspath(file))
    UPLOAD_FOLDER_PATH = 'images' # 相对于当前文件路径的地址
    UPLOAD_FOLDER = os.path.join(UPLOAD_FOLDER_ROOT, UPLOAD_FOLDER_PATH)

建立帳戶

python manager.py create_user

將同時建立一個

default的相簿

python manager.py key
顯示使用者key

上傳

上傳後圖片儲存路徑

  • #原圖路徑:

    UPLOAD_FOLDER + 'username' + 'photo' + %Y + %m + (时间戳+随机数).png
  • 縮圖路徑:

    UPLOAD_FOLDER + 'username' + 'thumb' + %Y + %m + (时间戳+随机数).png
example

使用

requests本機上傳

import requests

def images():
    url = 'http://127.0.0.1:8000/api/images'
    files = {'images': open('desktop.png', 'rb')}
    multiple_files = [
        ('images', ('11.png', open('11.png', 'rb'), 'image/png')),
        ('images', ('desktop.png', open('desktop.png', 'rb'), 'image/png'))
    ]
    headers = {
        'Api-Key':
        'InhpeWFuZzA4MDdJBtx4AWlPpI_Oxx1Ki8',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'
    }
    # r = requests.post(url, files=multiple_files, headers=headers)
    r = requests.post(url, files=files, headers=headers)
    print(r.text)
                                               


#

以上是使用Python實作一個簡單的圖片上傳儲存服務的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn