Gzipping文件流以多种形式上传

时间:2012-06-09 19:27:46

标签: python

我正在努力将mp3文件上传到webhost(我无法控制),在StackOverflow上的相关问题之后,我注意到主机确实支持Gzip编码上传。

在python中,我如何编码我的流(我从open(filename)获得)并将其发送到服务器?

def upSong(fileName):
    datagen, headers = multipart_encode({"mumuregularfile_0": open(fileName, "rb")})

    uploadID = math.floor(random.random()*1000000)
    request = urllib2.Request("http://upload0.mumuplayer.com:443/?browserID=" + browserID + "&browserUploadID=" + str(uploadID), datagen, headers)

    urllib2.urlopen(request).read()

这是进行上传的代码,对于python来说还是新手我不知道我将如何处理这样的问题,但谷歌没有提供任何答案。

1 个答案:

答案 0 :(得分:2)

看看内置的gzip库:文档在这里:http://docs.python.org/library/gzip.html

您可以避免使用StringIO字符串文件对象

创建任何额外文件

也许就像这种方法:

import gzip, StringIO

def upSong(fileName):
    with open(filename, 'rb') as f
        stringf = StringIO.StringIO()
        zipper = gzip.GzipFile(mode = "wb", fileobj=stringf)
        zipper.write(f.read())
        zipper.close()
        datagen, headers = multipart_encode({"mumuregularfile_0": stringf)})

        uploadID = math.floor(random.random()*1000000)  
        request = urllib2.Request("http://upload0.mumuplayer.com:443/?browserID=" + browserID + "&browserUploadID=" + str(uploadID), datagen, headers)

        urllib2.urlopen(request).read()

未对此进行测试,因此可能存在错误......