Obsługa przesyłania kilku plików

Ostatnio bawiłem się w generowanie stron za pomocą pythona moim celem był mały uploader Jedno z jego opcji było przesyłanie kilku plików za pomocą tagu input i wprowadzonego w html 5 multiple=”multiple” kod index.py
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "Content-type:text/html\r\n\r\n"
print """
<meta http-equiv="\&quot;Content-type\&quot;" content="\&quot;text/html;" charset="utf-8\&quot;">
<form enctype="\&quot;multipart/form-data\&quot;" target="\&quot;frame" upload\"="" method="\&quot;post\&quot;" action="\&quot;upload.py\&quot;">
<legend>Wybierz jedno lub więcej zdjęć do edycji (maksymalnie 3)</legend>Plik: <input type="\&quot;file\&quot;" multiple="\&quot;multiple\&quot;" name="\&quot;filename\&quot;/">
<input type="\&quot;submit\&quot;" value="\&quot;Upload\&quot;">
</form> <iframe name="\&quot;frame" upload\"="" id="\&quot;frame" style="\&quot;display:block\&quot;" src="\&quot;\&quot;" onload="\&quot;\&quot;"></iframe>
"""
#!/usr/bin/env python # -*- coding: utf-8 -*- print "Content-type:text/html\r\n\r\n" print """ <meta http-equiv="\&quot;Content-type\&quot;" content="\&quot;text/html;" charset="utf-8\&quot;"> <form enctype="\&quot;multipart/form-data\&quot;" target="\&quot;frame" upload\"="" method="\&quot;post\&quot;" action="\&quot;upload.py\&quot;"> <legend>Wybierz jedno lub więcej zdjęć do edycji (maksymalnie 3)</legend>Plik: <input type="\&quot;file\&quot;" multiple="\&quot;multiple\&quot;" name="\&quot;filename\&quot;/"> <input type="\&quot;submit\&quot;" value="\&quot;Upload\&quot;"> </form> <iframe name="\&quot;frame" upload\"="" id="\&quot;frame" style="\&quot;display:block\&quot;" src="\&quot;\&quot;" onload="\&quot;\&quot;"></iframe> """
#!/usr/bin/env python
# -*- coding: utf-8 -*-

print "Content-type:text/html\r\n\r\n"
print """




Wybierz jedno lub więcej zdjęć do edycji (maksymalnie 3)Plik:
"""
kod upload.py
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import cgi, os
import cgitb; cgitb.enable()
form = cgi.FieldStorage()
fileitem = form['filename']
print """\
Content-Type: text/html\n
""";
message = ''
if isinstance(fileitem, list):
if len(fileitem) > 3:
message += "Za dużo plików (maksymalnie 3)"
else:
iGood = 0;
iBad = 0;
for item in fileitem:
if item.filename:
fn = os.path.basename(item.filename)
#open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(item.file.read())
iGood+=1;
else:
iBad+=1;
message += '%d files upload correctly\n %d files upload incorrectly' % (iGood,iBad)
else:
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename)
#open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read())
message += 'The file "' + fn + '" was uploaded successfully %s' % (fileitem)
else:
message += 'No file upload'
print """
%s
""" % (message)
#!/usr/bin/env python # -*- coding: utf-8 -*- import cgi, os import cgitb; cgitb.enable() form = cgi.FieldStorage() fileitem = form['filename'] print """\ Content-Type: text/html\n """; message = '' if isinstance(fileitem, list): if len(fileitem) > 3: message += "Za dużo plików (maksymalnie 3)" else: iGood = 0; iBad = 0; for item in fileitem: if item.filename: fn = os.path.basename(item.filename) #open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(item.file.read()) iGood+=1; else: iBad+=1; message += '%d files upload correctly\n %d files upload incorrectly' % (iGood,iBad) else: if fileitem.filename: # strip leading path from file name to avoid # directory traversal attacks fn = os.path.basename(fileitem.filename) #open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read()) message += 'The file "' + fn + '" was uploaded successfully %s' % (fileitem) else: message += 'No file upload' print """ %s """ % (message)
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import cgi, os
import cgitb; cgitb.enable()

form = cgi.FieldStorage()

fileitem = form['filename']

print """\
Content-Type: text/html\n

""";

message = ''

if isinstance(fileitem, list):

if len(fileitem) > 3:
message += "Za dużo plików (maksymalnie 3)"
else:
iGood = 0;
iBad = 0;

for item in fileitem:
if item.filename:
fn = os.path.basename(item.filename)
#open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(item.file.read())
iGood+=1;
else:
iBad+=1;

message += '%d files upload correctly\n %d files upload incorrectly' % (iGood,iBad)

else:
if fileitem.filename:
# strip leading path from file name to avoid
# directory traversal attacks
fn = os.path.basename(fileitem.filename)
#open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read())

message += 'The file "' + fn + '" was uploaded successfully %s' % (fileitem)
else:
message += 'No file upload'

print """

%s


""" % (message)
funkcje zapisu za komentowałem
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read())
open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read())
open('/home/darkgl/www/skrypty/tmp/' + fn, 'wb').write(fileitem.file.read())
jeśli przesyłamy kilka plików to dostajemy listę
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if isinstance(fileitem, list):
if isinstance(fileitem, list):
if isinstance(fileitem, list):
jeśli jeden to mamy już tylko 1 obiekt ustawiłem że maksymalnie można wrzucić 3 pliki
Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
if len(fileitem) > 3:
if len(fileitem) > 3:
 if len(fileitem) > 3:

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.