flask保存 文件到本地


本篇隊長介紹一下如何 把前端上傳的文件保存 到 后端flask項目目錄

首先講一下上傳、保存文件的思路:

  第一步:前端通過post請求方式提交上傳的文件

     <input id="file" type="file" name="fileName" style="display: inline-block"/>
    <input type="submit" value="上傳文件" />

  第二步: 后端flask通過 request.files['fileName'] 獲取文件對象

    f = request.files['fileName']

  第三步:指定要保存的文件夾的絕對路徑 (此案例把上傳文件放到task_files文件夾內)

    UPLOAD_FOLDER = 'app/controls/task_mgm/task_files'
    file_dir = os.path.join(os.getcwd(), UPLOAD_FOLDER)
 第四步:分別 保存文件路徑到本地 和數據庫以便查詢    
    file_path = os.path.join(file_dir, f.filename)
    f.save(file_path)
    task.fileName = f.filename
代碼Demo
 1 @duty_mgm.route('/upload', methods=['POST'])
 2 @login_required
 3 def upload():
 4      #  保存上傳的文檔
 5         UPLOAD_FOLDER = 'app/controls/task_mgm/task_files'
 6         file_dir = os.path.join(os.getcwd(), UPLOAD_FOLDER)
 7         if not os.path.exists(file_dir):
 8             os.makedirs(file_dir)
 9         f =request.file.get('fileName')  # 獲取上傳的文檔對象
10         if f:
11             file_path = os.path.join(file_dir, f.filename)  # filename是f的固有屬性
12             f.save(file_path)                 # 保存到指定目錄
13             task.fileName = f.filename   # 保存到數據庫
14         try:
15             db.session.add(task)
16             db.session.commit()
17         except Exception as e:
18             flash('添加失敗')
19         flash('添加成功')        
20     return render_template('/task_mgm/taskinfo_add.html', form=form, header=header)    # 返回到文件上傳頁面
View Code


ALLOWED_EXTENSIONS = set(['txt', 'png', 'jpg', 'xls', 'JPG', 'PNG', 'xlsx', 'gif', 'GIF', 'ppt', 'pptx', 'doc', 'docx', 'csv', 'sql', 'py'])
# 用於判斷文件后綴,可調用
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1] in ALLOWED_EXTENSIONS
 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM