代码在这里:
#!/usr/bin/env python
#-*-coding:utf-8 -*-
import web
urls=('/','index')
class index:
def GET(self):
web.header("Content-Type","text/html; charset=utf-8")
return """<html><head></head><body>
<form method="POST" enctype="multipart/form-data" action="">
<input type="file" name="mainTable" />
<br/>
<input type="submit" />
</form>
</body></html>"""
def POST(self):
i=web.input(mainTable={})
fout=open(".\\tables\\main.xls",'w')
fout.write(i.mainTable.file.read())
fout.close()
if __name__=="__main__":
app=web.application(urls,globals())
app.run()
我把它放在linux服务器上,它运行正常,excel文件上传成功(当然必须更改路径格式),我可以下载并用excel打开它。
但是当我把它放在Windows服务器上时,文件已上传,但我无法打开它。 excel表示文件已损坏。那么我的代码有什么问题呢?
答案 0 :(得分:3)
来自the docs
默认设置是使用文本模式,可以转换
'\n'
个字符 在写作和回读时的特定平台表示。 因此,在打开二进制文件时,您应该将'b'
附加到该模式 以二进制模式打开文件的值,这将提高可移植性。 (即使在不处理二进制文件的系统上,附加'b'
也很有用 文本文件不同,它用作文档。)
fout=open(".\\tables\\main.xls", 'wb')