Flask學習「二」(保存文件—按年,月,日遞歸創建文件夾分別保存)
這段時間比較忙,一週沒有寫博客了,今天晚上放鬆一下寫個博客,本篇記錄如何將上傳的圖片按照年月日分別創建對應的文件夾並分別保存對應的圖片。
首先在Python中使用time模塊處理時間,用os模塊處理文件的,那麼我們下面將會用到這兩個模塊。
廢話不多說,代碼如下:
# =====================================start=======================================#
@api.route('/upload')
class upload(Resource):
@api.expect(parser)
def post(self):
form = UploadForm().validate_for_api()
fname = request.files.get('files') # 獲取上傳的文件
if fname:
t = time.strftime('%Y%m%d%H%M%S') # 年月日/時分秒
year = time.strftime('%Y', time.localtime(time.time())) # 系統當前時間年份
month = time.strftime('%m', time.localtime(time.time())) # 月份
day = time.strftime('%d', time.localtime(time.time())) # 日期
name = t + '_' + fname.filename # 通過_拼接時間戳和文件名
path = r'/usr/local/var/www/tiny/' # 上傳文件後nginx保存的路徑
fileYear = year
fileMonth = fileYear + '/' + month
fileDay = fileMonth + '/' + day + '/'
if not os.path.exists(path+fileYear): # 創建“年“文件夾
os.mkdir(path+year)
os.mkdir(path+fileYear+'/'+month)
os.mkdir(path+fileYear+'/'+month + '/' + day)
else:
if not os.path.exists(path+fileYear+'/'+month): # 創建“月“文件夾
os.mkdir(path+fileYear+'/'+month)
os.mkdir(path+fileYear+'/'+month+ '/' + day)
else:
if not os.path.exists(path+fileYear+'/'+month+ '/' + day): # 創建“日“文件夾
os.mkdir(path+fileYear+'/'+month+ '/' + day)
new_fname = path + fileDay + name
fname.save(new_fname) # 保存文件到指定路徑
‘’‘
上傳文件
’‘’
upload_form = UploadUpdateForm()
upload_form.path.data = fileDay
upload_form.type.data = form.type.data
# upload_form = upload_form.validate_for_api()
result = Upload().get_obj_by_form(upload_form).save_or_update()
return jsonify({'url': 'http://192.168.1.1:8080/tiny/'+fileDay + name, 'tar_url':path + fileDay + name, 'success': 1, 'message': '圖片上傳成功'})
else:
return '{"msg": "請上傳文件!"}
# =====================================end=======================================#
這樣就完成了上傳文件部分的代碼編寫。