Skip to main content
 首页 » 编程设计

python可以将图像文件读取为二进制文件

2025年05月04日8dyllove98

我需要上传一个图像文件,我按照人们的建议使用 MultipartPostHandler.py。 但仍然不起作用。 这是我的代码:

params = {"upload", open("12345.jpg", "rb")} // in 'rb' 
opener = urllib2.build_opener(MultipartPostHandler) 
res = opener.open(url, params) 

这是 MultipartPostHander 中的代码:

def multipart_encode(vars, files, boundary = None, buffer = None): 
    if boundary is None: 
        boundary = mimetools.choose_boundary() 
    if buffer is None: 
        buffer = '' 
    for(key, value) in vars: 
        buffer += '--%s\r\n' % boundary 
        buffer += 'Content-Disposition: form-data; name="%s"' % key 
        buffer += '\r\n\r\n' + value + '\r\n' 
    for(key, fd) in files: 
        file_size = os.fstat(fd.fileno())[stat.ST_SIZE] 
        filename = fd.name.split('/')[-1] 
        contenttype = mimetypes.guess_type(filename)[0] or 'application/octet-stream' 
        buffer += '--%s\r\n' % boundary 
        buffer += 'Content-Disposition: form-data; name="%s"; filename="%s"\r\n' % (key, filename) 
        buffer += 'Content-Type: %s\r\n' % contenttype 
        # buffer += 'Content-Length: %s\r\n' % file_size 
        fd.seek(0) 
        buffer += '\r\n' + fd.read() + '\r\n' 
    buffer += '--%s--\r\n\r\n' % boundary 
    return boundary, buffer 
multipart_encode = Callable(multipart_encode) 
 
https_request = http_request 

错误出现在:

buffer += '\r\n' + fd.read() + '\r\n' 

错误是:

'ascii' codec can't decode byte 0xff in position 2: ordinal not in range(128) 

这个问题困扰了我很多,请帮帮我! 谢谢。

请您参考如下方法:

我已经使用 Doug Hellman 的博客中的 MultiPartForm 类成功地将文件上传到我们的邮件服务器:http://pymotw.com/2/urllib2/index.html#module-urllib2

希望你也能使用它。