Allerdings läd er kein Bild hoch und leider weiß ich nicht woran das liegen kann, ich poste hier mal wireshark output, script output und das script.
Hoffe das ihr mir sagen könnt woran das ganze liegen kann.
wireshark:
POST /redaktion/index.php HTTP/1.1
Accept-Encoding: identity
Content-Length: 55636
Host: shop.killtec.de
User-Agent: PyMOTW (http://www.doughellmann.com/PyMOTW/)
Connection: close
Content-Type: application/x-www-form-urlencoded
Authorization: Basic a2lsbHRlYzpWLm5ldy5TaG9w
Content-Type: multipart/mixed; boundary="===============3538629565701217456=="
MIME-Version: 1.0
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="Sprachzeile"
deutsch
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="txt_title"
******
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="action"
bilderupload
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="job"
artikelbildupload
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="navigat"
navia
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="anzeigen"
1
--===============3538629565701217456==
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: form-data; name="bild"; filename="18926-00455.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAEOAQ4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAg [...] Ow+Dd3sMs0trrORGx/tuEca9EUfhT69DCZJgcJUhWjCdWvTlzwrVqkpzjP+aOqUX2aStd2PiOIfFrjHiHC18uqYnBZZleIozw1bLsowFHC0KuGqRcJ0a1Wp7fFVITpycKkXiFTnF/AnZnz7+yz+zR8Mv2PvgR4C/Z0+DlrrNp8Ofhza6xBoEfiLXL7xJrk8/iHxFrHi7X9R1XWdRZri8vtX8S6/rGq3Hlrb2VvJetbadZ2NhDbWcH0FRRXrH5oFFFFABRRRQAUUUUAf/9k=
--===============3538629565701217456==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="artikel_nummer"
18926-000
--===============3538629565701217456==--HTTP/1.1 200 OK
Date: Mon, 06 Dec 2010 12:03:28 GMT
Server: Apache
Set-Cookie: PHPSESSID=393608878b8a91d13d620ed2ad4c76f7; path=/
Expires: Mon, 26 Jul 1997 05:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Last-Modified: Mon, 06 Dec 2010 12:03:29 GMT
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html
Code: Alles auswählen
OUTGOING DATA:
Content-Type: multipart/mixed; boundary="===============5616250537987302203=="
MIME-Version: 1.0
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="Sprachzeile"
deutsch
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="txt_title"
*****
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="action"
bilderupload
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="job"
artikelbildupload
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="navigat"
navia
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="anzeigen"
1
--===============5616250537987302203==
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: form-data; name="bild"; filename="18926-00455.jpg"
/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/2wBDAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQH/wAARCAEOAQ4DASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL
[...]
/APguV8cv2SPilrf7Df7KPhvTfCPxQv8A4deFvFnjD9ovxFPb69deB9L8epq6afpXwu+HkFpcrqvjVLPSpL2TxP4ouTonh1J4THoGpTzw6lp2NfEUsNRnXrS5KUFeUrN9kkktZNtpJ/wAFQf8Ago98HvjzpfxL0T9tr9pbxP4l8mXUtEb4pfGHxv8AFvwTqqxz20uueENd+GvxA1zVvCGvaJqdvLb6mLO207RdatIXn1DwxfabqEVgLT5XljkIVnijDlnDL/ywV2nltrlWUiRmtrbUZ7iyuiqqE0fXYpRIBZxZ4C4Eeq+MLCGIb4PC9vd6hq1zKIWCX+rw3FjYaVdtMHsPtbpJfz6jb3/2VDfQtcWt7bPq6LW1PNsfUc3LEVLRozqNp8qpyioypSSjFfFNRp2d002trs8/MvDXg/LqOGpUMgwCqV8xwdCFCcXWr4mlXk6OLpKVedaqnTwlTFYmnUTU6Lw6xEZQlT97/Tj/AOCRP/Bc74L/APBRbRrD4V/EdNA+Cv7X2i6a8mu/CyTUXHhj4l2unRSHUPGnwR1fVZxc69pQWI3OueB7+STxz4If7RBqcOr6Rb2/ie//AHqVg3Sv8WgApc2t8ss1vf6XfW11ZahbT3dnqOmapaspsLu1vhc2mpWN/DKsUlg0l9Y6xDgHRPEV4pihk/t8/wCDYf8A4KSfHT44eK/AGVfCM3hXXTaNdNbW8lx8T9ZvPFXxYSVYPtAnv8Awl4n8Ir5zwXZ0yOMQKn4lza54j1z4leIdb8Y6v4t8T63418P6fq+p+IfG2u6r4u8R+INR0i4nTUrvWNZ1vUbu/tuEca9EUfhT69DCZJgcJUhWjCdWvTlzwrVqkpzjP+aOqUX2aStd2PiOIfFrjHiHC18uqYnBZZleIozw1bLsowFHC0KuGqRcJ0a1Wp7fFVITpycKkXiFTnF/AnZnz7+yz+zR8Mv2PvgR4C/Z0+DlrrNp8Ofhza6xBoEfiLXL7xJrk8/iHxFrHi7X9R1XWdRZri8vtX8S6/rGq3Hlrb2VvJetbadZ2NhDbWcH0FRRXrH5oFFFFABRRRQAUUUUAf/9k=
--===============5616250537987302203==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: form-data; name="artikel_nummer"
18926-000
--=======
Code: Alles auswählen
#!/usr/bin/python3.1
import os
import sys
import re
import urllib.request
import itertools
#from io import StringIO
import mimetypes
import base64
import email.mime.image
import email.mime.multipart
import email.mime.text
#import cStringIO
#import message
#import string
#import pickle
class MultiPartForm(object):
"""Accumulate the data to be used when posting a form."""
def __init__(self):
self.form_fields = []
self.files = []
self.boundary = "127.0.0.1.1000.4336.1291319528.064.1"
return
def get_content_type(self):
return 'multipart/form-data; boundary=%s' % self.boundary
def add_field(self, name, value):
"""Add a simple field to the form data."""
self.form_fields.append((name, value))
return
def add_file(self, fieldname, filename, fileHandle, mimetype=None, encoding=None):
"""Add a file to be uploaded."""
body = fileHandle.read()
if mimetype is None:
mimetype = mimetypes.guess_type(filename)[0] or 'application/octet-stream'
self.files.append((fieldname, filename, mimetype, encoding, body))
return
def __str__(self):
"""Return a string representing the form data, including attached files."""
# Build a list of lists, each containing "lines" of the
# request. Each part is separated by a boundary string.
# Once the list is built, return a string where each
# line is separated by '\r\n'.
parts = []
part_boundary = '--' + self.boundary
# Add the form fields
parts.extend(
[ part_boundary,
'Content-Disposition: form-data; name="%s"' % name,
'',
value,
]
for name, value in self.form_fields
)
# Add the files to upload
parts.extend(
[ part_boundary,
'Content-Disposition: file; name="%s"; filename="%s"' % \
(field_name, filename),
'Content-Type: %s' % content_type,
1 and 'Content-Transfer-Encoding: %s' % content_encoding or "",
'',
body,
]
for field_name, filename, content_type, content_encoding, body in self.files
)
# Flatten the list and add closing boundary marker,
# then return CR+LF separated data
flattened = list(itertools.chain(*parts))
flattened.append('--' + self.boundary + '--')
flattened.append('')
return '\r\n'.join(flattened)
if __name__ == '__main__':
msg = email.mime.multipart.MIMEMultipart()
file = open('/home/karloff/python/webupload/18926-00455.jpg', 'rb')
ufile = email.mime.image.MIMEImage( file.read() )
ufile.add_header('Content-Disposition', 'form-data' , name='bild' , filename='18926-00455.jpg')
sprachzeile = email.mime.text.MIMEText('deutsch')
sprachzeile.add_header('Content-Disposition', 'form-data', name='Sprachzeile')
txt_title = email.mime.text.MIMEText('******')
txt_title.add_header('Content-Disposition', 'form-data', name='txt_title')
action = email.mime.text.MIMEText('bilderupload')
action.add_header('Content-Disposition', 'form-data', name='action')
job = email.mime.text.MIMEText('artikelbildupload')
job.add_header('Content-Disposition', 'form-data', name='job')
navigat = email.mime.text.MIMEText('navia')
navigat.add_header('Content-Disposition', 'form-data', name='navigat')
anzeigen = email.mime.text.MIMEText('1')
anzeigen.add_header('Content-Disposition', 'form-data', name='anzeigen')
artikel_nummer = email.mime.text.MIMEText('18926-000')
artikel_nummer.add_header('Content-Disposition', 'form-data', name='artikel_nummer')
abspeichern = email.mime.text.MIMEText('speichern')
abspeichern.add_header('Content-Disposition', 'form-data', name='abspeichern')
msg.attach( sprachzeile )
msg.attach(txt_title)
msg.attach(action)
msg.attach(job)
msg.attach(navigat)
msg.attach(anzeigen)
msg.attach(ufile)
msg.attach(artikel_nummer)
print(msg.as_string())
import sys
#sys.exit()
request = urllib.request.Request('http://***********/redaktion/index.php')
request.add_header('User-agent', 'PyMOTW (http://www.doughellmann.com/PyMOTW/)')
body = msg.as_string()
request.add_header('Authorization' , 'Basic *******==')
request.add_data(body)
print()
print('OUTGOING DATA:')
print(request.get_data())
print()
print('SERVER RESPONSE:')
print (urllib.request.urlopen(request).read())
Kann mir irgendwer sagen woran das liegen kann dass das nicht klappt mit dem Upload?