Ich arbeite an einer Flask -Anwendung und habe eine Datei file_handler.py erstellt, um einige Dienstprogrammfunktionen zu organisieren. Eine der Funktionen in Helper.py soll eine hochgeladene Datei in dem von App.config ['Upload_Folder'] definierten in app.py . Die Datei wird jedoch nicht tatsächlich in den angegebenen Ordner gespeichert, und das System wird kein Fehler aufgeworfen. Obwohl meine Fehlerbehandlung den ValueError erhöht: "Kein Inhalt für die Verarbeitung verfügbar" . Da Helper.py eine separate Datei ist, übertrage ich auch das Objekt an der Anforderung als Argument an sie. Ich frage mich, ob dies möglicherweise ein Problem verursacht - könnte die Funktion lautlos ausfallen, da sie nicht richtig auf den Host oder Kontext aus einem anderen Modul zugreifen kann?
class File():
def __init__(self, app):
self.SUPPORTED_FILE_TYPES = {}
self.app = app
def validate_file_type(self, filename, expected_type):
"""Validate if the uploaded file matches the expected type"""
if not filename:
return False, "No filename provided"
ext = filename.rsplit('.', 1)[-1].lower() if '.' in filename else ''
if not ext:
return False, "File has no extension"
if ext not in self.SUPPORTED_FILE_TYPES:
return False, f"Unsupported file extension: .{ext}"
if expected_type == 'text' and ext != 'txt':
return False, "Please upload a .txt file for Text File type"
elif expected_type == 'pdf' and ext != 'pdf':
return False, "Please upload a .pdf file for PDF File type"
elif expected_type == 'code' and ext in ['txt', 'pdf']:
return False, "Please upload a programming file for Code File type"
return True, ext
def file_save(self, file, expected_type):
"""Save uploaded file with proper validation"""
if not file or file.filename == '':
return None, "No file selected"
is_valid, result = self.validate_file_type(file.filename, expected_type)
if not is_valid:
return None, result
ext = result
secure_name = secure_filename(file.filename)
file_path = os.path.join(self.app.config['UPLOAD_FOLDER'], secure_name)
try:
file.save(file_path)
return file_path, ext
except Exception as e:
return None, f"Failed to save file: {str(e)}"
@staticmethod
def validate_url(url):
"""Validate URL format"""
if not url or not url.strip():
return False, "URL cannot be empty"
url = url.strip()
if not url.startswith(('http://', 'https://')):
url = 'https://' + url
if not validators.url(url):
return False, "Invalid URL format"
return True, url
def file_loader(self, file_type, request, group_id):
"""Load and process different file types"""
content = ''
splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=30)
if file_type == 'text':
file_path, _ = self.file_save(request.files.get(f'file_{group_id}'), 'text')
loader = TextLoader(file_path)
elif file_type == 'pdf':
file_path, _ = self.file_save(request.files.get(f'file_{group_id}'), 'pdf')
loader = PyMuPDFLoader(file_path, mode="page", images_inner_format="text", images_parser=RapidOCRBlobParser())
elif file_type == 'code':
file_path, ext = self.file_save(request.files.get(f'file_{group_id}'), 'code')
if ext != 'ipynb':
loader = TextLoader(file_path)
try:
splitter = splitter.from_language(self.SUPPORTED_FILE_TYPES[ext])
except:
pass
else:
loader = NotebookLoader(file_path, include_outputs=True, max_output_length=30)
elif file_type == 'link':
url = request.form.get(f'url_{group_id}', '').strip()
is_valid, validated_url = self.validate_url(url)
if not is_valid:
raise ValueError(validated_url)
loader = WebBaseLoader(validated_url)
elif file_type == 'pasted':
content = request.form.get(f'pasted_{group_id}', '').strip()
if not content:
raise ValueError("No text was pasted")
try:
for page in loader.lazy_load():
content += page.page_content + '\n'
except Exception as e:
raise ValueError(f"Could not load content from file: {str(e)}")
if not content.strip():
raise ValueError("The file appears to be empty or contains no readable content")
chunks = splitter.split_text(content)
return chunks
< /code>
Fragen: < /p>
Könnte die Anfrage in eine Helferfunktion wie diese Probleme beim Zugriff auf Formdaten oder Header übergeben? app.config ['Upload_Folder']
? Und dies funktioniert gut, wenn diese Codes in derselben Datei vorhanden sind.>
Ich arbeite an einer Flask -Anwendung und habe eine Datei file_handler.py erstellt, um einige Dienstprogrammfunktionen zu organisieren. Eine der Funktionen in Helper.py soll eine hochgeladene Datei in dem von App.config ['Upload_Folder'] definierten in app.py . Die Datei wird jedoch nicht tatsächlich in den angegebenen Ordner gespeichert, und das System wird kein Fehler aufgeworfen. Obwohl meine Fehlerbehandlung den ValueError erhöht: "Kein Inhalt für die Verarbeitung verfügbar" . Da Helper.py eine separate Datei ist, übertrage ich auch das Objekt an der Anforderung als Argument an sie. Ich frage mich, ob dies möglicherweise ein [url=viewtopic.php?t=20324]Problem[/url] verursacht - könnte die Funktion lautlos ausfallen, da sie nicht richtig auf den Host oder Kontext aus einem anderen Modul zugreifen kann?[code]from file_handler import File import logging
def validate_file_type(self, filename, expected_type): """Validate if the uploaded file matches the expected type""" if not filename: return False, "No filename provided"
ext = filename.rsplit('.', 1)[-1].lower() if '.' in filename else ''
if not ext: return False, "File has no extension"
if ext not in self.SUPPORTED_FILE_TYPES: return False, f"Unsupported file extension: .{ext}"
if expected_type == 'text' and ext != 'txt': return False, "Please upload a .txt file for Text File type" elif expected_type == 'pdf' and ext != 'pdf': return False, "Please upload a .pdf file for PDF File type" elif expected_type == 'code' and ext in ['txt', 'pdf']: return False, "Please upload a programming file for Code File type"
return True, ext
def file_save(self, file, expected_type): """Save uploaded file with proper validation""" if not file or file.filename == '': return None, "No file selected"
is_valid, result = self.validate_file_type(file.filename, expected_type) if not is_valid: return None, result
ext = result secure_name = secure_filename(file.filename) file_path = os.path.join(self.app.config['UPLOAD_FOLDER'], secure_name)
try: file.save(file_path) return file_path, ext except Exception as e: return None, f"Failed to save file: {str(e)}"
@staticmethod def validate_url(url): """Validate URL format""" if not url or not url.strip(): return False, "URL cannot be empty"
url = url.strip() if not url.startswith(('http://', 'https://')): url = 'https://' + url
if not validators.url(url): return False, "Invalid URL format"
return True, url
def file_loader(self, file_type, request, group_id): """Load and process different file types""" content = '' splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=30)
elif file_type == 'link': url = request.form.get(f'url_{group_id}', '').strip() is_valid, validated_url = self.validate_url(url) if not is_valid: raise ValueError(validated_url)
loader = WebBaseLoader(validated_url)
elif file_type == 'pasted': content = request.form.get(f'pasted_{group_id}', '').strip() if not content: raise ValueError("No text was pasted")
try: for page in loader.lazy_load(): content += page.page_content + '\n'
except Exception as e: raise ValueError(f"Could not load content from file: {str(e)}")
if not content.strip(): raise ValueError("The file appears to be empty or contains no readable content")
chunks = splitter.split_text(content)
return chunks < /code> Fragen: < /p>
Könnte die Anfrage in eine Helferfunktion wie diese Probleme beim Zugriff auf Formdaten oder Header übergeben? app.config ['Upload_Folder'] [/code]? Und dies funktioniert gut, wenn diese Codes in derselben Datei vorhanden sind.>
Bearbeiten Sie für diejenigen, die diesen Thread mit ähnlichem Fehler aufnehmen können. In meinem Fall sollte der richtige Code
sein use Illuminate\Http\Request;
use App\Models\User;
use Session;...
Relative Python-Neuling hier, erstellt (einige Hilfe von AI), ein Skript, um (mehr) leicht blockierte Domänen von Whitelisting von DNScrypt-Proxy zu verwalten. Ein früheres Skript wurde gut...
Ich versuche, eine Immobilienwebsite zu kratzen, aber ich erhalte zu Beginn des Prozesses einen Fehler. chromedriver = webdriver.ChromeService(executable_path=r D:/My...
Ich habe eine Windows-Webanwendung, die auf Azure App Service gehostet wird. Ich versuche, die maximale Datei-Upload-Größe auf 1 GB zu erhöhen, indem ich die folgende web.config erstelle:...