Seite 1 von 1

Anfängerfrage zu Dateiupload per cgi

Verfasst: Sonntag 30. Oktober 2005, 16:45
von geogre
hallo,
ich bin (leider immernoch;) ein python-newbie, ich weiß auch das meine frage sicher sehr einfach und möglicherweise blöd ist, aber ich habe gerade etwa zwei stunden mit googeln und suche hier im forum verbracht und mag jetzt nicht mehr :(

also:

ich habe ein html-formular und möchte texteingaben machen, radiobutton-auswahlen und dergleichen und auch ein feld für einen dateiupload gibt es:

<input name="a_06_01_file" id="a_06_01" type="file" size="50" />

das ganze formular wird so übermittelt:

<form enctype="application/x-www-form-urlencoded" method="POST" action="cgi-bin/test.py">

im py-script soll die datei dann irgendwie ankommen um gespeichert werden zu können... das hab ich mir so (gekürzt) zusammengebastelt:

import cgitb
import cgi
cgitb.enable()
form = cgi.FieldStorage()
if form.has_key("a_06_01_file"):
file = form["a_06_01_file"]
data=file.file
print "<p>file="
print file
print "<br>data="
print data
print "</p>"

als ausgabe bekomme ich leider nur folgendes:

file= MiniFieldStorage('a_06_01_file', 'beispielbild.jpg')
data= None

also enthält dieses minifieldstorage wohl nur einen string mit dem namen, komplett ohne pfad? irgendwo anders im forum habe ich gelesen, dass jemand mit der gleichen methode einen riesensatz an 'data' bekommen hat, warum krieg ich nur 'None' ?

danke für hilfe!

Verfasst: Sonntag 30. Oktober 2005, 17:25
von jens
Ich denke du solltest mal hier im Forum nach "cgi" + "upload" suchen. Da ist bestimmt was dabei :?

Verfasst: Sonntag 30. Oktober 2005, 17:49
von geogre
... wie ich oben schon geschrieben habe, ich habe SEHR lange gesucht (auch hier im forum und auch nach cgi+upload), sicher ist irgendwo etwas dabei, aber ich habe es nicht gefunden, daher meine bitte um hilfe.

Verfasst: Sonntag 30. Oktober 2005, 19:21
von jens
Und hiermit kannst du nicht's anfangen???

Verfasst: Samstag 5. November 2005, 03:01
von geogre
doch! super, habe viel daraus gelernt. ich hatte ja schon nicht den richtigen 'enctype'...

jetzt krieg ich die daten alle übermittelt, das
form = cgi.FieldStorage()
enthält offenbar auch die daten der hochgeladenen datei. den rest des skriptes aus dem empfohlenen thread (s.u.) verstehe ich leider nicht ganz.

Code: Alles auswählen

#!/usr/bin/python
import cgi
import ftplib
import os.path
import os
import cgitb
import PIL
cgitb.enable()
form = cgi.FieldStorage()
data_of_file = form["file"]
fileobj = form["file"].file
print "Content-Type : text/html"
print


#fsize = len(data_of_file.value)
#if fsize > 60000 :
    #print "Content-Type : text/html"
    #print
    #print 'The file is too big'

ending = os.path.splitext(data_of_file.filename)
if ending[1] in ('.jpeg', '.jpg', '.png'):
    dict = 'pics'
    list = os.listdir(dict)
    print list
    count = str(len(list) + 1)
    conn = ftplib.FTP('ftp-gateway.de','user','passwd')
    conn.cwd('/public_html/cgi-bin/pics/')
    serverf2 = count+'.pic'
    repl = path.replace('\\%#x27;, os.sep)
    conn.storbinary('STOR %s' % serverf2, fileobj)
else :
    print "Content-Type : text/html"
    print
    print 'JPEG and PNG only'
ich habe versucht, das mit entspr. daten und verzeichnissen anzupassen, aber ich bekomme immer nur einen internal server error vom apache.

kann ich, da ich die datei ja schon im form-objekt habe, diese nicht irgendwie mit datei.write("inhalt aus dem formobjekt") abspeichern? warum muss das per ftp laufen wenn die daten doch schon auf dem server sind? speziell diese zeilen

conn = ftplib.FTP('ftp-gateway.de','user','passwd')
conn.cwd('/public_html/cgi-bin/pics/')
repl = path.replace('\\%#x27;, os.sep)
conn.storbinary('STOR %s' % serverf2, fileobj)

verstehe ich daher leider gar nicht. auch wenn es eine etwas blöde frage ist, aber könnte mir das jemand erklären?

tausend dank

tausend dank auch für den tipp mit dem thread!!!

Verfasst: Samstag 5. November 2005, 03:03
von geogre
ich hab jetzt immerhin rausgefunden, dass diese zeile

repl = path.replace('\\%#x27;, os.sep)

böse ist. was soll diese x27 geschichte??? danke für die aufklärung eines unwissenden ;)

Verfasst: Samstag 5. November 2005, 09:33
von mitsuhiko