mirror of
https://github.com/mattintech/simplefileupload-server.git
synced 2026-07-11 15:21:53 +00:00
initial commit
This commit is contained in:
57
src/app.py
Normal file
57
src/app.py
Normal file
@@ -0,0 +1,57 @@
|
||||
import os
|
||||
import uuid
|
||||
from flask import Flask, request, jsonify, send_from_directory
|
||||
from werkzeug.utils import secure_filename
|
||||
import requests
|
||||
import utils.mLogger as log
|
||||
|
||||
app = Flask(__name__)
|
||||
app.config['UPLOAD_FOLDER'] = 'tmp/uploads'
|
||||
|
||||
if not os.path.exists(app.config['UPLOAD_FOLDER']):
|
||||
os.makedirs(app.config['UPLOAD_FOLDER'])
|
||||
|
||||
# TinyURL API for generating short URLs
|
||||
def generate_tiny_url(long_url):
|
||||
response = requests.get(f'http://tinyurl.com/api-create.php?url={long_url}')
|
||||
return response.text if response.status_code == 200 else None
|
||||
|
||||
# Route for file uploads
|
||||
@app.route('/upload', methods=['POST'])
|
||||
def upload_file():
|
||||
if 'file' not in request.files:
|
||||
log.e("No File Part")
|
||||
return jsonify({'error': 'No file part'}), 400
|
||||
|
||||
file = request.files['file']
|
||||
if file.filename == '':
|
||||
log.e("No selected file")
|
||||
return jsonify({'error': 'No selected file'}), 400
|
||||
|
||||
filename = secure_filename(file.filename)
|
||||
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
|
||||
log.i(f"File upload: {file_path}")
|
||||
file.save(file_path)
|
||||
|
||||
# Generate a download link
|
||||
download_url = request.host_url + 'download/' + filename
|
||||
tiny_url = generate_tiny_url(download_url)
|
||||
|
||||
return jsonify({'tiny_url': tiny_url}), 200
|
||||
|
||||
# Route for downloading the file (one-time)
|
||||
@app.route('/download/<filename>', methods=['GET'])
|
||||
def download_file(filename):
|
||||
file_path = os.path.join(app.config['UPLOAD_FOLDER'], filename)
|
||||
|
||||
if os.path.exists(file_path):
|
||||
# Serve the file and then delete it
|
||||
response = send_from_directory(app.config['UPLOAD_FOLDER'], filename)
|
||||
os.remove(file_path)
|
||||
return response
|
||||
else:
|
||||
return jsonify({'error': 'File not found'}), 404
|
||||
|
||||
if __name__ == '__main__':
|
||||
log.i("Running flask in debug...")
|
||||
app.run(debug=True, host="0.0.0.0", port=7777)
|
||||
Reference in New Issue
Block a user