Flaschendatei hochladen und verarbeiten

7

Ich benutze Bottle, um ziemlich große Dateien hochzuladen. Die Idee ist, dass die Webanwendung beim Hochladen der Datei einen Systembefehl mit dem hochgeladenen Dateipfad als Argument ausführt (und vergisst). Außer dem Starten des Systembefehls mit dem korrekten Dateipfad als Argument muss ich die Datei nicht speichern, aber ich muss sicher sein, dass die Datei verfügbar ist, bis der Prozess die Verarbeitung abschließt.

Ich benutze den genauen hier beschriebenen Code: Ссылка

Meine Fragen sind:

  • Speichern Sie die hochgeladene Datei im Speicher oder an einem bestimmten Ort auf der Festplatte (oder vielleicht Flask, ein bisschen von beiden)?
  • Ist die hochgeladene Datei direkt für andere Tools ohne .read () verfügbar und speichert die Bytes dann manuell in einer bestimmten Datei auf der Festplatte?
  • Was wäre der beste Weg, den Systembefehl mit der Datei als Argument zu starten? Ist es möglich, den Pfad direkt zu einer bestehenden Datei zu übergeben?
agnsaft 12.01.2013, 18:15
quelle

3 Antworten

14

Ok, lass uns das kaputt machen.

Der vollständige Code lautet:

HTML:

%Vor%

PYTHON-CODE:

%Vor%

(aus dem Dokument, das Sie angegeben haben)

Zunächst sehen wir also, dass wir zuerst die Informationen aus dem name und dem data im HTML-Formular ziehen und sie den Variablen name und data zuweisen. Das ist ziemlich einfach. Als nächstes weisen wir die Variable raw auf data.file.read() zu. Dies ist im Grunde alles der Datei, die in die Variable raw hochgeladen wurde. Das heißt, die gesamte Datei ist im Speicher, weshalb sie "Dies ist gefährlich für große Dateien" als Kommentar neben der Zeile setzen.

Wenn Sie die Datei auf Festplatte speichern möchten, können Sie dies tun (aber seien Sie vorsichtig ), indem Sie etwas wie folgt verwenden:

%Vor%

Was Ihre anderen Fragen betrifft:

1. "Was wäre der beste Weg, den Systembefehl mit der Datei als Argument zu starten? Ist es möglich, den Pfad direkt an eine vorhandene Datei zu übergeben?"

Sie sollten das subprocess -Modul sehen, speziell Popen : Ссылка

2. "Ist die hochgeladene Datei direkt für andere Tools ohne .read () verfügbar und speichert die Bytes dann manuell in einer bestimmten Datei auf der Festplatte?"

Ja, Sie können die Dateidaten weitergeben, ohne sie auf der Festplatte zu speichern. Seien Sie jedoch gewarnt, dass der Speicherverbrauch überwacht werden muss. Wenn diese "Werkzeuge" jedoch nicht in Python sind, haben Sie möglicherweise mit Pipes oder Subprozessen zu tun, um die Daten an diese "Werkzeuge" zu übergeben.

    
IT Ninja 12.01.2013, 18:45
quelle
4
%Vor%

funktioniert nicht

können Sie

verwenden %Vor%     
quelle
1

Die Datei wird von der von Ihnen verwendeten Routine bearbeitet. Das heißt, Ihr Lesevorgang übernimmt die Verbindung (die Datei sollte laut wsgi spec nicht dabei sein)

    
Andrew 08.10.2013 12:10
quelle

Tags und Links