diff --git a/.gitignore b/.gitignore index 9983fe3..5cd80f9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,19 +1,22 @@ # Build- und Cache-Ordner ignorieren -__pycache__/ -upload/ -logs/ -build/ -dist/ +.dev/__pycache__/ +.dev/upload/ +.dev/logs/ +.dev/build/ +.dev/dist/ /pyUpload.*/ -Output/ +.dev/Output/ # Virtuelle Umgebung ignorieren (falls vorhanden) -.venv/ -.env/ -.idea/ -.vscode/ -*.pem +.dev/.venv/ +.dev/.env/ +.dev/.idea/ +.dev/.vscode/ +.dev/*.pem # PyInstaller-exe-Dateien ignorieren *.spec -pyUpload.exe \ No newline at end of file +pyUpload.exe + +# Sonstiges +Desktop.ini diff --git a/_static/Tagebuch b/_static/Tagebuch deleted file mode 100644 index f11911c..0000000 --- a/_static/Tagebuch +++ /dev/null @@ -1,70 +0,0 @@ - - - - -Entwicklertagebuch - - - - - - - - - - -
-
- - - - - -

Entwicklertagebuch

- - -

08.03.25

- -

Heute habe ich die mit innoSetup auf einem Rechner installiert auf dem überhaupt kein Python installiert war und dies funktionierte nicht. Klar auch, die venv Umgebung setzt eine Python Installation vorraus und arbeitet mit absoluten Pfaden. Der nächste Versuch wird mit einer portablen Python Version durchgeführt.

- - - - - - - - -
- - - \ No newline at end of file diff --git a/_static/Tagebuch.br b/_static/Tagebuch.br deleted file mode 100644 index 5ca9cd3..0000000 Binary files a/_static/Tagebuch.br and /dev/null differ diff --git a/_static/build-infos b/_static/build-infos deleted file mode 100644 index 66affc2..0000000 --- a/_static/build-infos +++ /dev/null @@ -1,86 +0,0 @@ - - - - - -## exe erstellen: - -### pyinstaller - -pip install pyinstaller -pyinstaller --onefile --add-data "template.html;." --add-data "success.html;." --add-data "favicon.ico;." --windowed --icon favicon.ico pyUpload.py -pyinstaller --add-data "template.html;." --add-data "success.html;." --add-data "favicon.ico;." --windowed --icon favicon.ico pyUpload.py - -### nuitka - -python setup.py build -nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py - - - -## requirements.txt: - -pipreqs . --force - - - - - - - - - - -
-
- - - - - -

-## exe erstellen: - -### pyinstaller - -pip install pyinstaller -pyinstaller --onefile --add-data "template.html;." --add-data "success.html;." --add-data "favicon.ico;." --windowed --icon favicon.ico pyUpload.py -pyinstaller --add-data "template.html;." --add-data "success.html;." --add-data "favicon.ico;." --windowed --icon favicon.ico pyUpload.py - -### nuitka - -python setup.py build -nuitka --standalone --onefile --enable-plugin=tk-inter --windows-console-mode=disable --windows-icon-from-ico=favicon.ico pyUpload.py - - - -## requirements.txt: - -pipreqs . --force

- - -

- - - - - - - - -
- - - \ No newline at end of file diff --git a/_static/build-infos.br b/_static/build-infos.br deleted file mode 100644 index 2b92615..0000000 Binary files a/_static/build-infos.br and /dev/null differ diff --git a/_static/info b/_static/info deleted file mode 100644 index 35dc005..0000000 --- a/_static/info +++ /dev/null @@ -1,177 +0,0 @@ - - - - -#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung - - - - - - - - - - -
-
- - - - - -

#pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung

- - -

Beschreibung

- -

pyUpload ist eine leistungsstarke und dennoch einfache Lösung für den sicheren Datei-Upload über HTTPS. Dieses Programm eignet sich ideal, um Dateien schnell und unkompliziert von einem Smartphone oder einem anderen Gerät auf einen Computer zu übertragen.

- -

Anstatt zusätzliche Apps oder USB-Kabel zu nutzen, kann der Benutzer den Server starten, den automatisch generierten QR-Code mit dem Smartphone scannen und die Dateien direkt über die Weboberfläche hochladen. Der Computer speichert die hochgeladenen Dateien strukturiert in individuellen Verzeichnissen für jedes Gerät.

- -

Zusätzlich erstellt pyUpload bei Bedarf automatisch ein selbstsigniertes SSL-Zertifikat, um eine verschlüsselte Verbindung sicherzustellen. Damit bleibt die Dateiübertragung geschützt und zuverlässig.

- -

Download

- - - -
-

Aktuell ist der Download der portablen und Compilierten Version gesperrt da es von diversen Virenscannern als Bedrohung eingestuft wird. Bei Interesse ist das Programm aktuell nur auf Anfrage per eMail erhältlich. In Kürze erfolgt eine Veröffentlichung inklusive Code auf GitHub.

-
- -

Features – Die Vorteile von pyUpload auf einen Blick

- - - -

Installationsanleitung – So startest du pyUpload

- -

Es gibt zwei Möglichkeiten, pyUpload zu nutzen: Entweder die manuelle Installation oder die Nutzung einer vorgefertigten, ausführbaren Version.

- -

1. Nutzung der fertigen Download-Version

- -

Falls du keine Python-Installation benötigst, kannst du die vorgefertigte ZIP-Version von pyUpload herunterladen. Diese enthält bereits alle notwendigen Dateien und ist sofort einsatzbereit.

- -
    -
  1. Lade die neueste pyUpload.zip von der offiziellen Website herunter.
  2. -
  3. Entpacke die ZIP-Datei in einen beliebigen Ordner.
  4. -
  5. Starte die enthaltene pyUpload.exe.
  6. -
  7. Falls die grafische Benutzeroberfläche nicht benötigt wird, kann die pyUpload.exe direkt in der Konsole mit --nogui gestartet werden: -sh -pyUpload.exe --nogui -
  8. -
  9. Eine Übersicht aller verfügbaren Befehle und Optionen erhältst du mit: -sh -pyUpload.exe --help -
  10. -
- -

2. Manuelle Installation für Python-Nutzer

- -
    -
  1. Stelle sicher, dass Python 3 auf deinem System installiert ist.
  2. -
  3. Installiere alle benötigten Abhängigkeiten mit folgendem Befehl: -sh -pip install -r requirements.txt -
  4. -
  5. Starte den Server mit: -sh -python pyUpload.py -
  6. -
  7. Falls du keine grafische Benutzeroberfläche benötigst, kannst du den Server im Konsolenmodus starten: -sh -python pyUpload.py --nogui -
  8. -
- -

Zugriff auf die Weboberfläche

- - - -

Datei-Upload leicht gemacht – So funktioniert es

- -
    -
  1. Öffne die Weboberfläche im Browser.
  2. -
  3. Wähle die gewünschte Datei aus und klicke auf „Hochladen“.
  4. -
  5. Nach erfolgreichem Upload erscheint eine Bestätigungsseite, die den Abschluss der Übertragung bestätigt.
  6. -
- -

SSL-Zertifikatswarnung in Browsern umgehen

- -

Da pyUpload ein selbstsigniertes SSL-Zertifikat nutzt, kann es beim ersten Zugriff zu einer Warnung des Browsers kommen. Um die verschlüsselte Verbindung zu akzeptieren, gibt es zwei Möglichkeiten:

- - - -

Logging und Fehlerbehandlung – Transparenz und Kontrolle

- - - -

Lizenz und Autor

- - - - - - - - - - -
- - - \ No newline at end of file diff --git a/_static/info.br b/_static/info.br deleted file mode 100644 index 88065ca..0000000 Binary files a/_static/info.br and /dev/null differ diff --git a/backup/pyUpload_0.1.0.zip b/backup/pyUpload_0.1.0.zip deleted file mode 100644 index 5270e56..0000000 Binary files a/backup/pyUpload_0.1.0.zip and /dev/null differ diff --git a/desktop.ini b/desktop.ini deleted file mode 100644 index bcc959a..0000000 --- a/desktop.ini +++ /dev/null @@ -1,6 +0,0 @@ -[.ShellClassInfo] -IconResource=C:\Users\adam\Documents\Projekte\pyUpload\assets\favicon.ico,0 -[ViewState] -Mode= -Vid= -FolderType=Documents diff --git a/devPyside6-test/LICENSE b/devPyside6-test/LICENSE deleted file mode 100644 index f9180a2..0000000 --- a/devPyside6-test/LICENSE +++ /dev/null @@ -1,10 +0,0 @@ -MIT License - -Copyright (c) 2025 Adam Scotarczak (adam@skotarczak.net) - ionivation.com - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - diff --git a/devPyside6-test/README.md b/devPyside6-test/README.md deleted file mode 100644 index 1afa489..0000000 --- a/devPyside6-test/README.md +++ /dev/null @@ -1,93 +0,0 @@ -## pyUpload - Sicherer Datei-Upload-Server für eine einfache und sichere Dateiübertragung - -### Beschreibung - -pyUpload ist eine leistungsstarke und dennoch einfache Lösung für den sicheren Datei-Upload über HTTPS. Es richtet sich an Privatnutzer, die eine schnelle Möglichkeit suchen, Dateien zwischen Geräten zu übertragen, sowie an Unternehmen oder Teams, die eine sichere Lösung für den internen Datenaustausch benötigen. Dieses Programm eignet sich ideal, um Dateien schnell und unkompliziert von einem Smartphone oder einem anderen Gerät auf einen Computer zu übertragen. - -Anstatt zusätzliche Apps oder USB-Kabel zu nutzen, kann der Benutzer den Server starten, den automatisch generierten QR-Code mit dem Smartphone scannen und die Dateien direkt über die Weboberfläche hochladen. Der Computer speichert die hochgeladenen Dateien strukturiert in individuellen Verzeichnissen für jedes Gerät. - -Zusätzlich erstellt pyUpload bei Bedarf automatisch ein selbstsigniertes SSL-Zertifikat, um eine verschlüsselte Verbindung sicherzustellen. Damit bleibt die Dateiübertragung geschützt und zuverlässig. - -### Features – Die Vorteile von pyUpload auf einen Blick - -- **Sichere Dateiübertragung per HTTPS** – Alle Daten werden verschlüsselt übertragen. -- **Automatische Erstellung eines selbstsignierten SSL-Zertifikats** – Keine zusätzliche Konfiguration notwendig. -- **Intuitive, webbasierte Benutzeroberfläche** – Einfach zu bedienen, keine Installation erforderlich. -- **Strukturierte Speicherung** – Dateien werden in client-spezifischen Verzeichnissen gespeichert. -- **Zentralisierte und client-spezifische Logging-Funktion** – Detaillierte Nachverfolgung aller Uploads. -- **Flexible Nutzung mit oder ohne GUI** – Start als Desktop-Anwendung oder reine Konsolen-Version möglich. -- **Schnelle Einrichtung** – Download, Entpacken und sofort loslegen! - -### Installationsanleitung – So startest du pyUpload - -Es gibt drei Möglichkeiten, pyUpload zu nutzen: -- **Manuelle Installation** in einer vorhandenen Python-Umgebung, in der alle notwendigen Bibliotheken manuell installiert werden. -- **Nutzung einer vorgefertigten, ausführbaren .exe (Windows) Version**, die mit pyinstaller kompiliert wurde. -- **Nutzung in einer virtuellen Python-Umgebung**, die automatisch durch `install.bat` eingerichtet wird. Anschließend kann das Programm mit `start.bat` gestartet werden. - -#### 1. Manuelle Installation für Python-Nutzer - -1. Stelle sicher, dass **Python 3** auf deinem System installiert ist. -2. Installiere alle benötigten Abhängigkeiten mit folgendem Befehl: - ```sh - pip install -r requirements.txt - ``` -3. Starte den Server mit: - ```sh - python pyUpload.py - ``` -4. Falls du keine grafische Benutzeroberfläche benötigst, kannst du den Server im Konsolenmodus starten: - ```sh - python pyUpload.py --nogui - ``` - -#### 2. Nutzung der fertigen .exe Download-Version - -Falls du keine Python-Installation benötigst, kannst du die vorgefertigte **ZIP-Version** von pyUpload herunterladen. Diese enthält bereits alle notwendigen Dateien und ist sofort einsatzbereit. - -1. Lade die neueste **pyUpload.zip** von der offiziellen Website herunter, inklusive virtueller Umgebung. -2. Entpacke die ZIP-Datei in einen beliebigen Ordner. -3. Starte die enthaltene `pyUpload.exe`. -4. Falls die grafische Benutzeroberfläche nicht benötigt wird, kann die `pyUpload.exe` direkt in der Konsole mit `--nogui` gestartet werden: - ```sh - pyUpload.exe --nogui - ``` -5. Eine Übersicht aller verfügbaren Befehle und Optionen erhältst du mit: - ```sh - pyUpload.exe --help - ``` - -#### 3. Nutzung in virtueller Python-Umgebung - -Lade die ZIP-Datei mit der virtuellen Installationsumgebung herunter und starte die `install.bat` durch Doppelklick. Es öffnet sich ein Konsolenfenster (CLI) und eine virtuelle Umgebung für pyUpload wird erstellt. Anschließend kann das Programm mit der `start.bat` gestartet werden. In der Grundeinstellung wird eine GUI mit QR-Code gestartet. - -### Zugriff auf die Weboberfläche - -- Sobald der Server läuft, kann er über die lokale IP-Adresse aufgerufen werden: - ``` - https://:4443 - ``` -- Falls die GUI-Version gestartet wurde, erscheint ein **QR-Code**, der die Verbindungsadresse enthält. Dies ermöglicht eine einfache Verbindung mit Smartphones und Tablets. - -### Datei-Upload leicht gemacht – So funktioniert es - -1. Öffne die **Weboberfläche** im Browser. -2. Wähle die gewünschte **Datei aus** und klicke auf **„Hochladen“**. -3. Nach erfolgreichem Upload erscheint eine **Bestätigungsseite**, die den Abschluss der Übertragung bestätigt. - -### SSL-Zertifikatswarnung in Browsern umgehen - -Da pyUpload ein **selbstsigniertes SSL-Zertifikat** nutzt, wird es beim ersten Zugriff zu einer Warnung des Browsers kommen. Alternativ kann ein eigenes SSL-Zertifikat hinterlegt werden, indem die Zertifikats- und Schlüsseldateien `cert.pem` und `key.pem` durch eigene, signierte Zertifikate ersetzt werden. Um die verschlüsselte Verbindung zu akzeptieren, gibt es zwei Möglichkeiten: - -- In den meisten Browsern gibt es eine Option wie **„Erweitert“** oder **„Trotzdem fortfahren“**, um die Warnung zu übergehen. -- Alternativ kann das Zertifikat **manuell importiert und als vertrauenswürdig markiert** werden, um künftige Warnmeldungen zu vermeiden. - -### Logging und Fehlerbehandlung – Transparenz und Kontrolle - -- Alle **Uploads und Anfragen** werden in **zentralen sowie client-spezifischen Logdateien** gespeichert. Diese befinden sich im `logs/`-Verzeichnis. -- Falls während der Nutzung von pyUpload **Probleme auftreten**, bietet ein Blick in diese Logdateien wertvolle Hinweise zur Fehlerbehebung. - -### Lizenz und Autor - -- **Entwickelt von Adam Skotarczak (C) 2025**. - diff --git a/devPyside6-test/favicon.ico b/devPyside6-test/favicon.ico deleted file mode 100644 index 259d8f3..0000000 Binary files a/devPyside6-test/favicon.ico and /dev/null differ diff --git a/devPyside6-test/install.bat b/devPyside6-test/install.bat deleted file mode 100644 index 5420675..0000000 --- a/devPyside6-test/install.bat +++ /dev/null @@ -1,54 +0,0 @@ -@echo off -setlocal - -:: Prüfen, ob Python installiert ist -where python >nul 2>nul -if %ERRORLEVEL% NEQ 0 ( - echo Fehler: Python ist nicht installiert oder nicht im PATH! - echo Bitte installiere Python und starte die Installation erneut. - pause - exit /b 1 -) - -:: Python-Version prüfen (Mindestversion 3.8) -for /f "tokens=2 delims= " %%v in ('python --version 2^>^&1') do set PYTHON_VERSION=%%v -for /f "tokens=1,2 delims=." %%a in ("%PYTHON_VERSION%") do ( - if %%a LSS 3 ( - echo Fehler: Python 3.8 oder höher ist erforderlich! - pause - exit /b 1 - ) - if %%a==3 if %%b LSS 8 ( - echo Fehler: Python 3.8 oder höher ist erforderlich! - pause - exit /b 1 - ) -) - -:: Virtuelle Umgebung erstellen, falls sie nicht existiert -if not exist venv ( - echo Erstelle virtuelle Server-Umgebung ... - python -m venv --copies venv - if %ERRORLEVEL% NEQ 0 ( - echo Fehler beim Erstellen der virtuellen Umgebung! - pause - exit /b 2 - ) -) - -:: Aktivieren der virtuellen Umgebung -call venv\Scripts\activate - -:: Installieren der Abhängigkeiten -echo Installiere Abhaengigkeiten aus dem Internet ... -pip install --no-warn-script-location --disable-pip-version-check -r requirements.txt -if %ERRORLEVEL% NEQ 0 ( - echo Fehler beim Installieren der Abhaengigkeiten! - pause - exit /b 3 -) - -:: Erfolgsmeldung -echo. -echo Installation abgeschlossen. -timeout /t 3 >nul & exit /b 0 diff --git a/devPyside6-test/pyUpload.bat b/devPyside6-test/pyUpload.bat deleted file mode 100644 index 225bca5..0000000 --- a/devPyside6-test/pyUpload.bat +++ /dev/null @@ -1,16 +0,0 @@ -@echo off -setlocal - -:: Prüfen, ob die virtuelle Umgebung existiert -if not exist venv ( - echo Fehler: Die virtuelle Umgebung existiert nicht! - echo Führe zuerst "install.bat" aus. - pause - exit /b -) - -:: Aktivieren der virtuellen Umgebung -call venv\Scripts\activate - -:: Starte den Upload-Server -python pyUpload.py diff --git a/devPyside6-test/pyUpload.py b/devPyside6-test/pyUpload.py deleted file mode 100644 index a3ccb15..0000000 --- a/devPyside6-test/pyUpload.py +++ /dev/null @@ -1,118 +0,0 @@ -import sys -import os -import threading -import socket -import ssl -import qrcode -import webbrowser -from http.server import HTTPServer, SimpleHTTPRequestHandler -from PySide6.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget -from PySide6.QtGui import QPixmap -from PySide6.QtCore import Qt -from PIL import ImageQt - - -# --- HTTPS Server Klasse --- -class SecureHTTPRequestHandler(SimpleHTTPRequestHandler): - def do_GET(self): - if self.path == "/": - self.send_response(200) - self.send_header("Content-type", "text/html") - self.end_headers() - self.wfile.write(b"

pyUpload Server

Upload-Seite

") - else: - self.send_error(404) - - -def get_local_ip(): - """Ermittelt die lokale IP-Adresse""" - try: - s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - s.connect(("8.8.8.8", 80)) - ip = s.getsockname()[0] - s.close() - return ip - except: - return "127.0.0.1" - - -def run_server(port): - """Startet den HTTPS-Server in einem eigenen Thread""" - server_address = ("", port) - httpd = HTTPServer(server_address, SecureHTTPRequestHandler) - - context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) - context.load_cert_chain(certfile="cert.pem", keyfile="key.pem") - httpd.socket = context.wrap_socket(httpd.socket, server_side=True) - - print(f"Server läuft auf https://{get_local_ip()}:{port}") - httpd.serve_forever() - - -# --- PySide6 GUI --- -class UploadGUI(QWidget): - def __init__(self, server_ip, port): - super().__init__() - self.setWindowTitle("pyUpload - Secure File Upload") - self.setGeometry(100, 100, 400, 500) - - # Info Label - label_info = QLabel("HTTPS-Upload-Server läuft!", self) - label_info.setAlignment(Qt.AlignCenter) - - label_ip = QLabel(f"IP-Adresse: {server_ip}", self) - label_ip.setAlignment(Qt.AlignCenter) - - label_port = QLabel(f"Port: {port}", self) - label_port.setAlignment(Qt.AlignCenter) - - label_hint = QLabel("Scanne den QR-Code:", self) - label_hint.setAlignment(Qt.AlignCenter) - - # QR-Code generieren - url = f"https://{server_ip}:{port}" - qr = qrcode.make(url) - qr = qr.convert("RGB") # FIX: Konvertiere das Bild in ein gültiges Format für ImageQt - qr_img = ImageQt.ImageQt(qr) - pixmap = QPixmap.fromImage(qr_img) - qr_label = QLabel(self) - qr_label.setPixmap(pixmap) - qr_label.setAlignment(Qt.AlignCenter) - - - # Link Label (klickbar) - link_label = QLabel(f'{url}', self) - link_label.setOpenExternalLinks(True) - link_label.setAlignment(Qt.AlignCenter) - - # Beenden Button - btn_quit = QPushButton("Beenden", self) - btn_quit.clicked.connect(self.close) - - # Layout setzen - layout = QVBoxLayout() - layout.addWidget(label_info) - layout.addWidget(label_ip) - layout.addWidget(label_port) - layout.addWidget(label_hint) - layout.addWidget(qr_label) - layout.addWidget(link_label) - layout.addWidget(btn_quit) - - self.setLayout(layout) - - -# --- Start der Anwendung --- -if __name__ == "__main__": - port = 4443 - server_ip = get_local_ip() - - # HTTPS-Server in eigenem Thread starten - server_thread = threading.Thread(target=run_server, args=(port,), daemon=True) - server_thread.start() - - # Qt-Anwendung starten - app = QApplication(sys.argv) - window = UploadGUI(server_ip, port) - window.show() - sys.exit(app.exec()) diff --git a/devPyside6-test/requirements.txt b/devPyside6-test/requirements.txt deleted file mode 100644 index 61cc7a3..0000000 --- a/devPyside6-test/requirements.txt +++ /dev/null @@ -1,3 +0,0 @@ -PySide6 -qrcode -pillow diff --git a/devPyside6-test/start.bat b/devPyside6-test/start.bat deleted file mode 100644 index 25b1a6a..0000000 --- a/devPyside6-test/start.bat +++ /dev/null @@ -1,18 +0,0 @@ -@echo off -setlocal - -:: Prüfen, ob die virtuelle Umgebung existiert -if not exist venv ( - echo Virtuelle Umgebung nicht gefunden! Bitte zuerst install.bat ausführen. - pause - exit /b -) - -:: Aktivieren der virtuellen Umgebung -call venv\Scripts\activate - -:: Starten des Upload-Servers -python pyUpload.py - -:: Nach Beenden der Anwendung -deactivate diff --git a/devPyside6-test/success.html b/devPyside6-test/success.html deleted file mode 100644 index 5f98108..0000000 --- a/devPyside6-test/success.html +++ /dev/null @@ -1,47 +0,0 @@ - - - - - - - - - Upload Erfolgreich - - - -
-

Datei erfolgreich hochgeladen!

-

Ihre Datei wurde erfolgreich auf den Server übertragen.

- Neue Datei hochladen -
- - diff --git a/devPyside6-test/template.html b/devPyside6-test/template.html deleted file mode 100644 index 9977db2..0000000 --- a/devPyside6-test/template.html +++ /dev/null @@ -1,93 +0,0 @@ - - - - - - - - - File Upload - - - -
-

Datei-Upload

-
- - - Keine Datei ausgewählt - -
-
- - - -