Wenn ich die Daten mit .file hole, wird nur ein None übertragen. Kann das an der HTML Form liegen?
Gruß Hanman
Upload
'Ich liebe es wenn ein Plan funktioniert'
Wenn ich das Python Script nun per Post aufrufe, wird es nicht ausgeführt, Mozilla will es immer runterladen!
Gruß Hanman
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Das Script wird jetzt wie von Wunderhand ausgeführt, allerdings wird bei manchen Dateien einfch mal rein Request gesendet, bei anderen schon und wenn kommt immer ein Fehler. Ich bin einfach mal so frei und poste den ganzen Quelltext + den Fehler :
Und hier die Fehler :
Der kommt wenn ich local2 noch einmal in einen Sting Konvertiere (ist im Quelltext oben nicht drin) :
Es tut mir wirklich leid das ich euch soviele Umstände bereite Ich bin selber am Verzweifeln
Gruß Hanman
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()
local = form["file"].value
local2 = form["file"].file
print "Content-Type : text/html"
print
print local2
#fsize = os.path.getsize(local)
#if fsize > 60000 :
#print "Content-Type : text/html"
#print
#print 'The file is too big'
ending = os.path.splitext(local)
if ending[1] == '.jpeg' or '.jpg' or '.png' :
dict = 'pics'
list = os.listdir(dict)
print list
count = len(list)
count = count + 1
count = str(count)
conn = ftplib.FTP('ftp-gateway.de','user','passwd')
conn.cwd('/public_html/cgi-bin/pics/')
serverf2 = count+'.pic'
repl = path.replace('\\', os.sep)
print '\n',form["file"].file
conn.storbinary('STOR %s' % serverf2, open(local2, 'rb'))
open(serverf2, 'r')
local2.close()
else :
print "Content-Type : text/html"
print
print 'JPEG and PNG only'
Und hier die Fehler :
Der kommt wenn ich local2 noch einmal in einen Sting Konvertiere (ist im Quelltext oben nicht drin) :
Der wenn ich einfach local2 nehme :Traceback (most recent call last):
File "/home/w11865/.//web/public_html/cgi-bin/upload.py", line 36, in ?
conn.storbinary('STOR %s' % serverf2, open(local3, 'rb'))
IOError: [Errno 2] No such file or directory: "<open file '(fdopen)', mode 'w+b' at 0x82aa290>"
Traceback (most recent call last):
File "/home/w11865/.//web/public_html/cgi-bin/upload.py", line 36, in ?
conn.storbinary('STOR %s' % serverf2, open(local2, 'rb'))
TypeError: coercing to Unicode: need string or buffer, file found
Es tut mir wirklich leid das ich euch soviele Umstände bereite Ich bin selber am Verzweifeln
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
Hi. Ich schaus mir nachher mal an, mit dem vollem Quelltext ist das um ein vielfaches leichter. Eben hab ich gerade dein FTP-Passwort aus dem Script gelöscht !!! Sowas darfst du nicht ohne weiteres posten, wir können nicht garantieren wer das alles gesehen hat (in den 20 min zwar so gut wie keiner, aber man weiß nie).
Zuletzt geändert von Milan am Montag 2. August 2004, 12:46, insgesamt 1-mal geändert.
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
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'
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'
- 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
- 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.
hth, Milan
Da bin ich dir wirklich zu Dankbarkeit verpflichtet Milan. Funktionirt soweit alles wunderbar und ich verstehe auch alles!
Gruß Hanman
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'
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 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'
so hat sich erledigt, pil kann ich wohl ohne weiteres nicht installieren
Gruß Hanman
Gruß Hanman
'Ich liebe es wenn ein Plan funktioniert'