gzip格式的多文件流上载

2024-05-09 20:47:05 发布

您现在位置: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来说还是个新手,我不知道如何解决这样的问题,但是google没有给出答案。在


Tags: 文件编码requestrandomopenurllib2filenamestackoverflow
1条回答
网友
1楼 · 发布于 2024-05-09 20:47:05

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

通过使用StringIO string file对象,可以避免创建任何额外的文件

也许是这样的方法:

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()

没有测试过,所以可能会出错。。。在

相关问题 更多 >