基于Flask實現文件上傳七牛云中并下載
在Flask中實現文件上傳和七牛云集成
文件上傳是Web應用中常見的功能之一,而七牛云則提供了強大的云存儲服務,使得文件存儲和管理變得更加便捷。在本篇博客中,我們將學習如何在Flask應用中實現文件上傳,并將上傳的文件保存到七牛云。
步驟 1: 安裝所需庫
首先,確保已安裝Flask、SQLAlchemy(如果需要數據庫支持)、以及七牛云的Python SDK??梢允褂胮ip進行安裝:
pip install Flask Flask-SQLAlchemy qiniu
步驟 2: 設置Flask應用
在Flask應用中,我們需要配置數據庫(如果有)、七牛云以及路由來處理文件上傳。這包括設置七牛云的 access_key、secret_key、bucket_name 以及域名。
from flask import Flask, request from flask_sqlalchemy import SQLAlchemy from qiniu import Auth, put_data app = Flask(__name__) app.config['SECRET_KEY'] = 'your-secret-key' # 設置Flask的秘鑰 # 配置SQLAlchemy數據庫 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@hostname/database' db = SQLAlchemy(app) # 配置七牛云 auth = Auth(access_key='your-access-key', secret_key='your-secret-key') bucket_name = 'your-bucket-name' domain = 'your-domain'
確保替換 your-secret-key、your-access-key、your-bucket-name 和 your-domain 為你的七牛云配置信息。分別是公鑰,私鑰,空間id,域名.其中公鑰和私鑰在個人中心-秘鑰管理查看.而空間id就是你的存儲空間的名字.


步驟 3: 編寫上傳下載文件路由
編寫一個路由,允許用戶上傳文件到七牛云。我們將使用 put_file 函數來實現文件的直接上傳。注意,你可以根據需要添加其他驗證邏輯。
@app.route('/upload', methods=['POST'])
def upload():
if 'file' not in request.files:
return "沒有文件部分"
file = request.files['file']
if file.filename == '':
return "沒有選擇文件"
with file.stream as data:
token = auth.upload_token(bucket_name, file.filename)
ret, info =put_file(token, file.filename, data)
if info.status_code == 200:
file_url = f'http://{domain}/{file.filename}'
return f'文件上傳成功!<a href="{file_url}" rel="external nofollow" >查看文件</a>'
else:
return "文件上傳失敗"
這個路由接受POST請求中的文件,并使用 put_file 函數將文件上傳到七牛云。如果上傳成功,它會返回如圖所示

key為文件名稱hash為tag.
接下來就是下載文件.
from qiniu import Auth
access_key = 'your_AK' # 替換為你的 Access Key
secret_key = 'your_SK' # 替換為你的 Secret Key
q = Auth(access_key, secret_key)
bucket_name = 'your_bucket_name' # 替換為你的 bucket 的名字
file_name = 'your_file_name' # 替換為你要下載的文件名
# 生成下載鏈接,有效期為 3600s
private_url = q.private_download_url('http://'+ bucket_name +'.qiniudn.com/'+ file_name, expires=3600)
print(private_url)
這段代碼會輸出一個 URL,你可以在瀏覽器中打開這個 URL 來下載文件。請注意,這個 URL 在生成后的一小時內有效。
而如果想在 Flask 中實現文件下載,我們可以創(chuàng)建一個路由來處理下載請求:
from flask import Flask, redirect
app = Flask(__name__)
@app.route('/download/<file_name>')
def download(file_name):
private_url = q.private_download_url('http://'+ bucket_name +'.qiniudn.com/'+ file_name, expires=3600)
return redirect(private_url)
然后,我們可以通過訪問 http://your_server_address/download/your_file_name 來下載文件。
步驟 4: 創(chuàng)建HTML表單
最后,創(chuàng)建一個HTML表單,允許用戶選擇文件并將其上傳到你的Flask應用。你可以根據需要自定義表單樣式。
<!DOCTYPE html>
<html>
<head>
<title>文件上傳</title>
</head>
<body>
<form method="POST" action="/upload" enctype="multipart/form-data">
<input type="file" name="file">
<input type="submit" value="上傳文件">
</form>
</body>
</html>這段代碼構建了一個簡單的上傳表單,其中包含一個文件選擇字段和一個提交按鈕以方便我們觸發(fā)上傳。
通過按照上述步驟,就可以在Flask應用中實現文件上傳和下載,將上傳的文件保存到七牛云并下載。
到此這篇關于基于Flask實現文件上傳七牛云中并下載的文章就介紹到這了,更多相關Flask文件上傳內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python庫urllib與urllib2主要區(qū)別分析
這篇文章主要介紹了Python庫urllib與urllib2主要區(qū)別,需要的朋友可以參考下2014-07-07
Python 中 and, or, &, |, ^ 
這篇文章主要介紹了Python 中 and, or, &, |, ^ 的使用小結,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧2024-01-01

