Upload

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Oh ja danke. Habe ich total vergessen das da noch mein Passwort drin steht.
Es liegen kaum Dateien auf dem Space und ich habe kein Root zugriff, also kann man zum Glück nicht viel anstellen!
:)

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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('\\', os.sep)
    conn.storbinary('STOR %s' % serverf2, fileobj)
else :
    print "Content-Type : text/html"
    print
    print 'JPEG and PNG only'
Hi. Das ist die Grunderneuerte Form deines Programmes. Es waren mehr als nur ein Fehler drin und die haben alle gut zusammengespielt.
  • form["file"] beinhaltet eine Instanz von cgi.FieldStorage, in der alle Werte der hochgeladenen Datei gespeichert sind, so zum Beispiel den Dateinamen auf dem Clientrechner. Außerdem beinhaltet es die komplette Datei bereits in form["file"].file , sie muss also nicht noch geöffnet werden
  • Deine if-Abfrage ist zwecklos gewesen. form["file"].value enthält die komplette Datei und keinen Dateinamen. Trotzdem wird die Frage funktionieren, da or ".jpg" dasteht. ".jpg" ist ein nicht leerer String, also immer wahr, somit hätte man auch if True schreiben können.
  • Die print statements habe ich rausgenommen, da sie wahrscheinlich eh nicht das ausgeben, was du erwartet hast :wink:
  • Die Datei ist bereits als fileobjekt existent, muss bzw kann nicht mehr mit open erzeugt werden. Das hat hauptsächlich den Fehler ausgelöst.
  • Da sie entweder als StringIO buffer oder als Temporayfileobject vorliegt muss sie nicht geschlossen werden. Das erledigt Python am Ende des Scriptes selber. Es wäre aber kein Fehler das selbst zu tun.
So... ich hoffe du verstehst im Zusammenhang mit dem Code etwas :wink:, bei Fragen einfach posten.

hth, Milan
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Da bin ich dir wirklich zu Dankbarkeit verpflichtet Milan. Funktionirt soweit alles wunderbar und ich verstehe auch alles!

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

Eine Frage hätte ich da noch :
Ich möchte noch für jedes Bild ein Thumbnail erstellen, unter zu Hilfe nahme des Pil Moduls. Wenn ich am anfang nun PIL importtere kommt kein Fehler, wenn ich aber nun auf PIL Funktionen zugreifen will werden diese nicht gefunden. Ich hab einfach den PIL Ordner mit in das cgi-bin Verzeichnis gelegt und habe auch noch eine PIL.pth Datei hinzugefügt.

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Hanman
User
Beiträge: 48
Registriert: Mittwoch 31. März 2004, 12:24
Kontaktdaten:

so hat sich erledigt, pil kann ich wohl ohne weiteres nicht installieren :(

Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Antworten