diff --git a/.gitignore b/.gitignore index 091fc37..1814433 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ venv/ setup.sh navidrome-upload.service +.idea/ \ No newline at end of file diff --git a/main.py b/main.py index a305940..6b249e2 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,5 @@ import os -from flask import Flask, flash, request, redirect +from flask import Flask, request, render_template from werkzeug.utils import secure_filename UPLOAD_FOLDER = '/opt/navidrome/music' @@ -15,34 +15,22 @@ def allowed_file(filename): @app.route('/', methods=['GET', 'POST']) def upload_file(): if request.method == 'POST': - # check if the post request has the file part if 'file' not in request.files: - flash('No file part') - return redirect(request.url) - file = request.files['file'] - # If the user does not select a file, the browser submits an - # empty file without a filename. - if file.filename == '': - flash('No selected file') - return redirect(request.url) - if file and allowed_file(file.filename): - filename = secure_filename(file.filename) - file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) - # File saved successfully, return a success message - return f''' -

File {filename} uploaded successfully

- - ''', 200 - return ''' - - Upload new File - -

Upload new File

-
- - -
- ''' + return render_template('error.html', error_message='No file part in the request'), 400 + files = request.files.getlist('file') + for file in files: + if file.filename == '': + return render_template('error.html', error_message='No selected file'), 400 + if file and allowed_file(file.filename): + filename = secure_filename(file.filename) + file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) + else: + return render_template('error.html', error_message=f'File "{file.filename}" is not allowed. Allowed types: {", ".join(ALLOWED_EXTENSIONS)}'), 400 + + return render_template('success.html', success_message=f'{len(files)} file(s) uploaded successfully!') + + return render_template('index.html') + if __name__ == '__main__': app.run(host='192.168.2.24', port=5001, debug=False) diff --git a/templates/error.html b/templates/error.html new file mode 100644 index 0000000..530cc3c --- /dev/null +++ b/templates/error.html @@ -0,0 +1,20 @@ + + + + + + Error - Upload Music + + + + +

Error

+

{{ error_message }}

+ + + \ No newline at end of file diff --git a/templates/index.html b/templates/index.html new file mode 100644 index 0000000..1f49f62 --- /dev/null +++ b/templates/index.html @@ -0,0 +1,22 @@ + + + + + + Upload Music + + + + +

Upload new File

+
+ + +
+ + \ No newline at end of file diff --git a/templates/success.html b/templates/success.html new file mode 100644 index 0000000..2c6e569 --- /dev/null +++ b/templates/success.html @@ -0,0 +1,20 @@ + + + + + + Success - Upload Music + + + + +

Success

+

{{ success_message }}

+ + + \ No newline at end of file