擅长:python、mysql、java
<p>要考虑的一件事是,在python中,类似文件的对象有一个API,这个API是严格遵守的。这使得代码非常灵活,它们是I/O流上的抽象。这些允许您的代码不必担心数据来自何处,即内存、文件系统、网络等</p>
<p><a href="http://docs.python.org/2/library/io.html#i-o-base-classes" rel="nofollow">File like</a>对象通常定义一对<a href="http://docs.python.org/2/library/io.html#i-o-base-classes" rel="nofollow">methods</a>,其中之一是<code>read</code></p>
<p>我不确定<code>InMemoryUploadedFile</code>的实际实现,也不确定它们是如何生成的,也不知道它们存储在哪里(我假设它们完全在内存中),但您可以放心,它们是类似于文件的对象,并且包含一个<code>read</code>方法,因为它们遵循文件api。</p>
<p>对于实现,您可以开始检查源:</p>
<ul>
<li><a href="https://github.com/django/django/blob/master/django/core/files/uploadedfile.py#L90" rel="nofollow">https://github.com/django/django/blob/master/django/core/files/uploadedfile.py#L90</a></li>
<li><a href="https://github.com/django/django/blob/master/django/core/files/base.py" rel="nofollow">https://github.com/django/django/blob/master/django/core/files/base.py</a></li>
<li><a href="https://github.com/django/django/blob/master/django/core/files/uploadhandler.py" rel="nofollow">https://github.com/django/django/blob/master/django/core/files/uploadhandler.py</a></li>
</ul>