# import streamlit as st # import os # import shutil # def main(): # st.title("File Explorer") # # File browsing # st.header("Browse Files") # current_dir = st.text_input("Current Directory", value=os.getcwd()) # try: # files = os.listdir(current_dir) # selected_file = st.selectbox("Select a file/folder", files) # full_path = os.path.join(current_dir, selected_file) # if selected_file: # if os.path.isfile(full_path): # st.write(f"You selected file: {selected_file}") # # Download # with open(full_path, "rb") as f: # st.download_button("Download", f, file_name=selected_file) # # Read # if selected_file.endswith((".txt",".py",".md",".csv")): # try: # with open(full_path,"r") as f_read: # content = f_read.read() # st.text_area("File content", content, height=300) # except UnicodeDecodeError: # st.write("Cannot display binary file content.") # elif os.path.isdir(full_path): # st.write(f"You selected directory: {selected_file}") # except FileNotFoundError: # st.error("Invalid directory path.") # except PermissionError: # st.error("Permission denied to access this directory.") # except OSError as e: # st.error(f"OS error: {e}") # # File Uploading # st.header("Upload Files") # uploaded_files = st.file_uploader("Choose files to upload", accept_multiple_files=True) # upload_dir = st.text_input("Upload Directory", value=os.getcwd()) # if uploaded_files: # for uploaded_file in uploaded_files: # try: # with open(os.path.join(upload_dir, uploaded_file.name), "wb") as f: # f.write(uploaded_file.getbuffer()) # st.success(f"Saved File: {uploaded_file.name} to {upload_dir}") # except Exception as e: # st.error(f"Error saving file: {e}") # if __name__ == "__main__": # main() from flask import Flask, url_for, redirect from flask import request as req from flask_cors import CORS app = Flask(__name__) CORS(app) from werkzeug.utils import secure_filename import os from PIL import Image app.config['UPLOAD_FOLDER'] = "static" from pyngrok import ngrok # Open a HTTP tunnel on the default port 80 # .ngrok.io" -> "http://localhost:80"> http_tunnel = ngrok.connect("1337", "http") print(http_tunnel) @app.route('/upload', methods=['GET','POST']) def index(): # If a post method then handle file upload if req.method == 'POST': if 'file' not in req.files: return redirect('/') file = req.files['file'] if file : filename = secure_filename(file.filename) file.save(os.path.join(app.config['UPLOAD_FOLDER'], filename)) if ("camera" in file.filename or "capture" in file.filename or "IMG" in file.filename or "Screenshot" in file.filename) : img=Image.open(f"static/{filename}") img.thumbnail((512, 512),Image.Resampling.LANCZOS) img.save(f"static/{filename}") return filename # Get Files in the directory and create list items to be displayed to the user file_list = '' for f in os.listdir(app.config['UPLOAD_FOLDER']): # Create link html link = url_for("static", filename=f) file_list = file_list + '
  • %s
  • ' % (link, f) # Format return HTML - allow file upload and list all available files return_html = ''' Upload File

    Upload File



    Files

      %s
    ''' % file_list return return_html if __name__ == '__main__': config = { 'host': 'localhost', 'port': 1337, 'debug': True, } app.run(**config)