<p>我自己解决问题:)我的代码:</p>
<pre><code> conn = httplib.HTTPConnection("mustafa-yontar.commondatastorage.googleapis.com")
conn.set_debuglevel(2)
f = open(filename,"r")
m = hashlib.md5()
m.update(f.read())
h = m.hexdigest()
has = h
dd = "%s" % datetime.datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")
strToSign = "PUT\n"+h+"\n\n"+dd+"\nx-goog-acl:public-read\n/mustafa-yontar/x.jpg"
sig = base64.b64encode(hmac.new(self.secret, strToSign, hashlib.sha1).digest())
total = os.path.getsize(filename)
header = {"Date":dd,"x-goog-acl":"public-read","Content-MD5":h,'Content-Length':total,'Authorization':"GOOG1 %s:%s" % (self.key,sig)}
conn.putrequest('PUT', "/x.jpg")
for h in header:
conn.putheader(h, header[h])
conn.endheaders()
bytess = open('x.jpg', 'rb').read()
f = StringIO(bytess)
f.seek(0)
while True:
bytes = f.read(1024)
if not bytes: break
length = len(bytes)
conn.send('%X\r\n' % length)
conn.send(bytes + '\r\n')
conn.send('0\r\n\r\n')
#errcode, errmsg, headers = conn.getresponse()
#h.close()
#conn.request("PUT","/mustafa-yontar/x.jpg",f.read(),header)
r1 = conn.getresponse()
print r1.status, r1.reason
print r1.read()
conn.close()
print has
</code></pre>