Bottle To Uploader By.Python
C'est pour les mémos, c'est donc le contenu minimum.
myapp.py
from bottle import route, run, template, request, static_file, url, get, post, response, error, abort, redirect, os
import sys, codecs
import bottle.ext.sqlalchemy
import sqlalchemy
import sqlalchemy.ext.declarative
sys.stdout = codecs.getwriter("utf-8")(sys.stdout)
@route("/")
def html_index():
return template("index", url=url)
@route("/static/<filepath:path>", name="static_file")
def static(filepath):
return static_file(filepath, root="./static")
@route("/static/img/<img_filepath:path>", name="static_img")
def static_img(img_filepath):
return static_img(img_filepath, root="./static/img/")
#File Upload
@get('/upload')
def upload():
return '''
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="submit" value="Upload"></br>
<input type="file" name="upload"></br>
</form>
'''
@route('/upload', method='POST')
def do_upload():
upload = request.files.get('upload', '')
if not upload.filename.lower().endswith(('.png', '.jpg', '.jpeg')):
return 'File extension not allowed!'
save_path = get_save_path()
upload.save(save_path)
return 'Upload OK. FilePath: %s%s' % (save_path, upload.filename)
def get_save_path():
path_dir = "./static/img/"
return path_dir
run(host="0.0.0.0", port=8000, debug=True, reloader=True)
...Omis car le code ci-dessous n'est pas pertinent
Je voulais également autoriser les connexions externes, donc l'hôte d'exécution n'est pas "localhost" Décrit dans "0.0.0.0".
Il ajoute également un chemin de fichier image pour le modèle.
myapp.py
#Pas de changement
#File Upload
@get('/upload')
def upload():
return '''
<form action="/upload" method="post" enctype="multipart/form-data">
<input type="submit" value="Upload"></br>
- <input type="file" name="upload"></br>
+ <input multiple="multiple" name="upload[image_file_name][]" type="file" accept="image/*" id="upload">
</form>
'''
@route('/upload', method='POST')
def do_upload():
- upload = request.files.get('upload', '')
+ pload_files = request.files.getall('upload[image_file_name][]')
- if not upload.filename.lower().endswith(('.png', '.jpg', '.jpeg')):
- return 'File extension not allowed!'
- save_path = get_save_path()
- upload.save(save_path)
- return 'Upload OK. FilePath: %s%s' % (save_path, upload.filename)
+ save_path = get_save_path()
+ for count, uplad_file in enumerate(upload_files):
+ upload_img = uplad_file
+ if not upload_img.filename.lower().endswith(('.png', '.jpg', '.jpeg')):
+ return template("no {{uplad_file}}", uplad_file=uplad_file)
+ upload_img.save(save_path)
+ return 'Upload OK. FilePath: %s ImageFiles:%s' % (save_path, pload_files)
#Aucun changement ci-dessous
La clé de la mise à jour est l'utilisation de ʻenumerate`. En utilisant cela, vous pouvez ajouter des éléments indexés et stocker les données.
Ce qui précède est un résumé de Bottle auquel j'ai récemment fait référence. .. ..
Recommended Posts