Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine GAE-Blobstore-如何正确响应上载处理程序失败_Google App Engine_File Io_Blobstore - Fatal编程技术网

Google app engine GAE-Blobstore-如何正确响应上载处理程序失败

Google app engine GAE-Blobstore-如何正确响应上载处理程序失败,google-app-engine,file-io,blobstore,Google App Engine,File Io,Blobstore,要使用blobstore API将文件上载到blobstore或GCS,必须首先获取上载url,然后向存储服务器发出明确的上载请求。 正确保存文件后,服务器将向您的上载处理程序重写一个请求,该请求可用于与文件关联的数据相关的所有处理 现在想象一下,将一个字段F与每个文件关联,该字段的内容需要验证。如果内容格式正确,用户只需将其与文件信息一起保存到数据库中即可。否则,如果F不正常,用户只需中止该过程,告诉用户F格式不正确。 但在这种情况下,文件是否仍保存在blobstore中? 我应该怎么做才能确

要使用blobstore API将文件上载到blobstore或GCS,必须首先获取上载url,然后向存储服务器发出明确的上载请求。
正确保存文件后,服务器将向您的上载处理程序重写一个请求,该请求可用于与文件关联的数据相关的所有处理

现在想象一下,将一个字段F与每个文件关联,该字段的内容需要验证。如果内容格式正确,用户只需将其与文件信息一起保存到数据库中即可。否则,如果F不正常,用户只需中止该过程,告诉用户F格式不正确。
但在这种情况下,文件是否仍保存在blobstore中? 我应该怎么做才能确保没有保存任何文件

我的想法是:简单地捕获异常,然后使用blobstore.delete(…)…
但它可能不起作用

因此,有没有办法以概率1删除文件,或者有没有更聪明的方法使失败不会造成浪费?

仅供参考,您可以使用给定的BlobInfo delete方法而不是blobstore.delete,除非您试图一次删除多个文件。 有多种方法可以“保证”删除不需要的blob上传,这里有几个选项(我相信还有很多): 1) 在UploadHandler中,提交一个任务(为了方便起见,您可以使用延迟任务),该任务将一直调用自身,直到验证成功删除为止(例如,get后没有BlobInfo)。
2) 使用GCS,将初始上载存储在临时位置,并使用UploadHandler复制()有效对象,并执行后台任务以删除旧的临时文件。

为什么BlobInfo.delete比另一个更好?并不更好,BlobInfo通过自己的密钥委托blobstore.delete。它只是稍微干净一点,因为你已经有了BlobInfo。好的,谢谢。我会深入临时文件的想法,谢谢!