无法删除GAE文件

时间:2014-01-09 13:05:46

标签: java google-app-engine google-cloud-datastore

我正在尝试使用

删除上传文件后删除文件
final FileService fileService = FileServiceFactory.getFileService();
fileService.delete(file);

但我明白了:

java.lang.UnsupportedOperationException: File \/blobstore\/writable:AD8BvukH[...]qau-Bb7AD does not have a finalized name

当我尝试使用

完成文件时
FileWriteChannel writeChannel = fileService.openWriteChannel(file, true);
writeChannel.closeFinally();

然后openWriteChannel()失败,带

com.google.appengine.api.files.FinalizationException
[...]
Caused by: com.google.apphosting.api.ApiProxy$ApplicationException: ApplicationError: 101: 

ApplicationError 101是什么意思? 如何正确删除文件?

1 个答案:

答案 0 :(得分:4)

看起来其他人已报告此问题,虽然已解决,但文件损坏仍可能存在问题。

  

2013年9月11日上午1:14

     

我们现在已经解决了这个问题,以防将来再次发生。然而,   过去创建的一些blob仍然会出错。我们   正在努力解决这些问题。

     

John Lowry代表App Engine团队

http://grokbase.com/t/gg/google-appengine/138xrawqw0/broken-blobstore-files-what-to-do

UnsupportedOperationException

对于第一个错误,the documentation states

  

java.lang.UnsupportedOperationException - 如果删除或文件不支持文件类型,则没有最终名称。

可能是文件已经完成,你不能因为其他原因删除它。

ApplicationError: 101

我认为第二个错误是指未找到的异常。

FinalizationError: ApplicationError: 101 Blobkey not found.

这可能会为您澄清问题。

  

如果您创建文件并写入文件,则只能使用finalize。但是你   完成后,无法写入文件。更新文件   在blobstore中,你总是要创建一个新的。当你   读取文件,您不必完成它。要阅读您拥有的文件   使用blobreader。看到:   https://developers.google.com/appengine/docs/python/blobstore/blobreaderclass

通过https://stackoverflow.com/a/12855653/1085891

修复损坏的上传

你可以resume the upload

  

如果传输中断,您可以使用--db_filename=...参数从中断处继续传输。

通过How to finish a broken data upload to the production Google App Engine server?

其他解决方案/信息: