2015-11-18 60 views
0

我正在使用类型文件的HTML输入将文件上传到我自己的服务器。在服务器上的Python脚本中,我可以将该文件及其元数据(如文件名和类型)作为FieldStorage对象接收。http文件上传到磁盘

我已将该对象的字段打印到HTML页面以查看它们所持有的内容。当我让它打印文件名,类型和文件(转换为字符串),我得到这个:

Filename: Lighthouse.jpg Type: image/jpeg File: <open file '<fdopen>', mode 'w+b' at 0x04403578>

我认为0x04403578是在服务器的内存中的文件的地址。但是mode 'w+b'是什么意思?如果我必须支持任意文件类型,我如何通过Python将该文件保存到磁盘?

回答

1

文件只是一个打开的文件对象,就像你从open得到的一样。 <fdopen>表示它已从文件描述符转换。 w+b表示它用于在二进制模式下读写。

您可以编写它像一个正常的文件,即

w = open('<filename>','w+b') 
w.write(f.read()) 
+0

它的工作原理,我都没有想到它是那么容易。但是,你能解释一下'w + b'的含义吗?我明白'w'表示写入,'b'表示二进制,但它不只是'wb'? –

+0

'w +'表示读写,而'w'不允许读。您可以参考[docs](https://docs.python.org/2/library/functions.html#open)以获取关于模式字符串的更多信息。 – tauroid