|
@@ -1,7 +1,7 @@
|
|
|
from flask import Blueprint, redirect, render_template, abort, flash, url_for, request
|
|
|
from flask_login import login_required, current_user
|
|
|
from flask_wtf import FlaskForm
|
|
|
-from wtforms import FileField, SubmitField
|
|
|
+from wtforms import FileField, StringField, SubmitField
|
|
|
from wtforms.validators import DataRequired
|
|
|
|
|
|
from aliyun import aliyun
|
|
@@ -12,6 +12,7 @@ oss = Blueprint("oss", __name__)
|
|
|
|
|
|
class UploadForm(FlaskForm):
|
|
|
file = FileField("选择文件", validators=[DataRequired()])
|
|
|
+ path = StringField("存储路径")
|
|
|
submit = SubmitField("上传")
|
|
|
|
|
|
|
|
@@ -23,10 +24,13 @@ def check_aliyun():
|
|
|
return
|
|
|
|
|
|
|
|
|
-@oss.route('get/<string:name>')
|
|
|
+@oss.route('get/<path:name>')
|
|
|
def get_page(name: str):
|
|
|
app.HBlogFlask.print_user_opt_success_log(f"get file {name}")
|
|
|
- return redirect(aliyun.shared_obj(name))
|
|
|
+ url = aliyun.shared_obj(name)
|
|
|
+ if url is None:
|
|
|
+ abort(404)
|
|
|
+ return redirect(url)
|
|
|
|
|
|
|
|
|
@oss.route('upload', methods=["GET", "POST"])
|
|
@@ -40,9 +44,13 @@ def upload_page():
|
|
|
form = UploadForm()
|
|
|
if form.validate_on_submit():
|
|
|
file = request.files["file"]
|
|
|
- aliyun.upload_file(file.filename, file)
|
|
|
- app.HBlogFlask.print_sys_opt_success_log(f"Upload file {file.filename}")
|
|
|
- flash(f"文件 {file.filename} 已上传: {url_for('oss.get_page', name=file.filename, _external=True)}")
|
|
|
+ path: str = form.path.data
|
|
|
+ if len(path) > 0 and not path.endswith('/'):
|
|
|
+ path += "/"
|
|
|
+ path += file.filename
|
|
|
+ aliyun.upload_file(path, file)
|
|
|
+ app.HBlogFlask.print_sys_opt_success_log(f"Upload file {path}")
|
|
|
+ flash(f"文件 {file.filename} 已上传: {url_for('oss.get_page', name=path, _external=True)}")
|
|
|
return redirect(url_for("oss.upload_page"))
|
|
|
app.HBlogFlask.print_load_page_log(f"OSS upload")
|
|
|
return render_template("oss/upload.html", UploadForm=form)
|