擅长:python、mysql、java
<p>如<a href="https://stackoverflow.com/questions/3702465/how-to-copy-inmemoryuploadedfile-object-to-disk?lq=1#comment40779691_3705098">@ups</a>所述,在上载大型文件时,您不希望使用<code>data.read()</code>阻塞系统内存。</p>
<p>来自<a href="https://docs.djangoproject.com/en/dev/topics/http/file-uploads/" rel="noreferrer">Django docs</a>:</p>
<blockquote>
<p>Looping over <code>UploadedFile.chunks()</code> instead of using <code>read()</code> ensures
that large files don't overwhelm your system's memory</p>
</blockquote>
<pre><code>from django.core.files.storage import default_storage
filename = "whatever.xyz" # received file name
file_obj = request.data['file']
with default_storage.open('tmp/'+filename, 'wb+') as destination:
for chunk in file_obj.chunks():
destination.write(chunk)
</code></pre>
<p>这将在<code>MEDIA_ROOT/tmp/</code>保存文件,除非另有说明。</p>