2011-12-14 62 views
2

我想让我的用户上传HTML内容到我的AppEngine网络应用程序。但是,如果我使用Blobstore上传所有文件(HTML文件,css文件,图像等),则会导致问题,因为到其他文件(页面,资源)的所有链接都不起作用。如何处理将HTML内容上传到AppEngine应用程序?

我看到两种可能性,但他们两人都不是很漂亮,我想避免使用它们:

  • 去了在HTML文件中的所有链接,并改变他们的相关blob键。

  • 保存文件和Blob键之间的映射,捕获所有重定向并提供blob(可能导致同名文件出现问题)。

我该如何优雅地解决这个问题,而不必去查看并更改我的用户文件?

+1

我不认为有更优雅的解决方案。由于html需要包含它的资源(css/image等)的正确路径。你能解释更多的用户案例吗?想要一个用户能够做到吗?在我的头上,我会围绕它制作一个html框架,并让用户在sperate textarea中指定css/js并将其作为文本存储在数据存储中。并利用图像blobstore。 – fredrik 2011-12-14 09:57:34

回答

0

保存映射是最好的选择。您需要以某种方式标识一组文件,因为多个用户可以上传具有相同名称的文件,然后将唯一路径名与该组中的每个文件相关联。您可以使用键名称使其成为一个简单的数据存储库,以查找与给定路径关联的Blob。不需要重定向 - 只需使用标准的Blobstore服务方法设置blobstore标头即可让App Engine为用户提供blob服务。

另一种选择是上传一个zip文件,正如弗雷德里克所建议的那样。不需要单独解压和存储文件 - 您可以直接在blobstore中从压缩文件中提供它们,因为this demo app可以。

1

由于应用引擎正在多台服务器上运行您的内容,因此无法写入文件系统。你可以做的是要求他们上传一个包含他们的html,css,js,图像的zip文件...... python的zipfile模块在appengine中可用,因此你可以解压这些文件并单独存储它们。这样,你就知道zip的目录结构。这允许您创建到blobstore中内容的相对路径的映射。我没有足够的zipfile经验来写一个完整的例子,我希望有经验的人可以编辑我的答案,或者用一个例子来创建一个新的答案。

相关问题