我正在尝试使用
删除上传文件后删除文件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是什么意思? 如何正确删除文件?
答案 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
如果传输中断,您可以使用
--db_filename=...
参数从中断处继续传输。
通过How to finish a broken data upload to the production Google App Engine server?