为了使用Blobstore API将文件上传到blobstore或GCS,必须先获取上传URL,然后向存储服务器发出明确的上传请求。
正确保存文件后,服务器会重写对上传处理程序的请求,该请求可以是与文件关联的数据相关的所有处理。
想象一下,现在要将每个文件与一个需要验证其内容的字段F相关联。如果内容格式良好,可以简单地将其与数据库中的文件信息一起保存,但是否则如果F不正确,则只需中止该过程就告诉用户F格式不正确。登记/> 但在这种情况下,文件是否仍保存在blobstore中? 我该怎么做才能确定没有文件保存?
我的想法是:简单我抓住异常并使用blobstore.delete(...)删除文件...
但它可能不起作用
因此有没有办法以概率1删除文件,还是有更智能的方法来使故障不造成浪费?
答案 0 :(得分:1)
仅供参考,您可以使用给定的BlobInfo删除方法而不是blobstore.delete,除非您尝试一次删除多个文件。 有多种方法可以保证"删除不需要的blob上传,这里有几个选项(我相信还有更多): 1)在UploadHandler中提交一个任务(为方便起见,你可以使用延期任务),它将一直调用自己,直到验证成功删除为止(例如,获取后没有BlobInfo)。 2)使用GCS,将初始上载存储在临时位置,并使用UploadHandler进行GCS复制(https://developers.google.com/storage/docs/json_api/v1/objects/copy)有效对象,并具有删除旧临时文件的后台任务。