python wsgi 图片怎么处理

balabalala 发布于 2014/06/19 17:46
阅读 725
收藏 0

初研究python

使用的是  Template(open(file)) 引入的 html, 在处理静态文件的时候蒙了

我对JS 和 css 使用的方法和 html类似, 就是响应的mime改一下., 但是图片就没办法了

js和css都是这样写的

def jsFile(environ, start_response):
	start_response('200 OK', [('content-type', 'text/javascript')])
	tpl = Template(Static(environ['PATH_INFO']))
	js = tpl.safe_substitute()
	return [js]
请教图片该怎么处理

def imgFile(environ, start_response):
	ext = environ['PATH_INFO'].split('.')
	for n in ext:
		mime = n
	m = [('content-type', 'image/'+mime)]	
	start_response('200 OK', m)	
	image = Image.open(os.getcwd()+environ['PATH_INFO'])
	return [image]



加载中
0
未注册用户
未注册用户
以前我是直接当文件处理的…没用PIL
未注册用户
未注册用户
手动设置下header,然后直接open文件,返回.read()?
balabalala
balabalala
给个栗子啊亲,正常的文件处理都是服务器来完成的,因为这里使用的是wsgi 所以需要手动设置
0
MeiKai
MeiKai
读取文件,返回文件数据,不过大文件不要直接一次性读取,最好用yield,否则占用内存太大
0
balabalala
balabalala

已经解决了, 刚刚有哥们回复的,他好像又删了


def imgFile(environ, start_response):
	ext = environ['PATH_INFO'].split('.')
	for n in ext:
		mime = n	
	m = [('content-type', 'image/'+mime)]	
	start_response('200 OK', m)	
	#image = Image.open(os.getcwd()+environ['PATH_INFO'])
	image = open(os.getcwd()+environ['PATH_INFO'], "rb")
	strio = StringIO.StringIO(image.read()).getvalue()
	return [strio]



0
ElvisZheng
ElvisZheng

StringIO 可以不需要,大文件读取还可以优化,下面是改进后的版本:

def imgFile(environ, start_response):
    ext = environ['PATH_INFO'].split('.')
    for n in ext:
        mime = n
    m = [('content-type', 'image/'+mime)]  
    start_response('200 OK', m)  
    
    image = open(os.getcwd()+environ['PATH_INFO'], "rb") 
    if 'wsgi.file_wrapper' in environ: 
        return environ['wsgi.file_wrapper'](image, 1024) 
    else: 
        return iter(lambda: image.read(1024), '')





balabalala
balabalala
谢谢, 亲, 哪天来请你吃饭... 太帮忙了
返回顶部
顶部