擅长:python、mysql、java
<p>下面是一个解决方案的示例。<strong>记住我还没有测试过这个,所以可能会有语法错误。将此视为建议。</strong></p>
<pre><code>def handle_uploaded_file(f,wusr):
nname = "%s.%s" % (str(wusr.oib), f.name.split(".")[1])
nname = unique(nname)
destination = open('%s/%s' % (MEDIA_ROOT, nname), 'wb+')
for chunk in f.chunks():
destination.write(chunk)
destination.close()
# Return unique file name in format <filename>-<num>.<ext>
def unique(path):
import os.path
num = 0
newpath = path
def fileExists(path):
return os.path.isfile(path)
# Keep incrementing until an unique filename is reached
while fileExists(newpath):
num += 1
pieces = path.rsplit('.', 1)
newpath = "%s-%d.%s" % (pieces[0], num, pieces[1])
return newpath
</code></pre>
<p><code>unique</code>函数将生成一个保证唯一的新文件名。当您达到大量同名上载时,这种针对每个间隔检查磁盘的特殊解决方案可能会出现问题。如果此解决方案的速度有问题,只需列出目录中的所有文件,然后对该字符串执行上述操作即可。这将把磁盘操作的数量从<em>x</em>减少到1</p>