在视图中,我正在生成一个文件,将其保存为Django模型(文件字段)中的字段并返回url:
...
obj.pdf.save(obj.hash_id + '.pdf', File(open(destination_path, 'r')))
ret = {
'pdfUrl': obj.pdf.url
}
ret = json.dumps(ret)
return HttpResponse(ret, mimetype='text/plain')
然后用户被重定向到ret中返回的url,有时候这是一个空白的pdf,但如果他们稍后刷新,那么完整的pdf就在那里。我怀疑S3没有完成将它保存到最后。在返回url之前,在Django中是否有任何干净的方法来确保文件是可访问的?
答案 0 :(得分:0)
通过用户的方式在脚本中自己访问对象,并查看其大小是否符合特定阈值,或者如果知道大小,是否全部存在。
答案 1 :(得分:0)
根据boto IRC频道中的几个人,由于S3是分布式的,因此无法判断您上传的文件是否已传播。但它会很快发生。希望这可以帮助其他人解决这个问题;你只需要等一下。这可能会在未来发生变化。