我已经开始了一个项目,它是一个让世界听我所有人的歌曲的网络应用程序。到目前为止,网站上提供的所有歌曲都存储在战争/歌曲中。然后,我的数据库只存储这个文件的路径,这非常有效。
我想创建一个只有管理员可以访问的网页(基本上是我:D)才能在这个位置上传我的歌曲,所以我不需要部署整个项目只是为了添加一首歌......而我是现在读到它在app引擎中是不可能的?我不认为将歌曲存储在数据库中是个好主意?
我可以帮你解决一下我的问题吗?非常感谢!
另外,如果app引擎不适合我的目标,我想知道一些托管我的java应用程序的好地方......这似乎很少见!
再次感谢..
答案 0 :(得分:6)
GAE是可能的。您只需将文件存储在Blobstore中,而不是存储在文件系统中。您可以使用blob键代替路径。您可以像这样上传文件:
<body>
<form action="<%= blobstoreService.createUploadUrl("/upload") %>" method="post" enctype="multipart/form-data">
<input type="file" name="myFile">
<input type="submit" value="Submit">
</form>
您可以在web.xml约束中设置以阻止访问您的站点:
<security-constraint>
<web-resource-collection>
<url-pattern>/admin/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>
然后从servlet提供文件:
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws IOException {
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
blobstoreService.serve(blobKey, res);
答案 1 :(得分:2)
IBM真的很惊讶IBM是Google的忠实粉丝。我发现了大量有关Google技术的IBM出版文献。嗯....为什么?
反正
对IBM有利的事情对我有好处: http://www.ibm.com/developerworks/java/library/j-gaestorage/
对谷歌有益的是对我也有好处。 Google不希望您将文件存储在“文件系统”中。他们希望您使用他们的地图缩减存储空间。
你错了 - 谷歌存储库技术优于你对“文件系统”的看法。首先,您需要阅读操作系统原则,尤其是“文件系统”部分。文件系统是blob的映射。
GAE是一个云。 “云” - 不是桌面,也不是Web服务器,也不是数据库服务器,也不是多个离散服务器的循环。云与服务器类似于模拟与离散IC,连续累积智能(有些人“错误地称之为模糊逻辑”)与离散的if-then-else逻辑,量子动力学与牛顿力学相对应。
Continuum(或者至少是云试图的)。在连续体(或连续体的尝试)中,您无法存储“文件”。
你已经过时了。不,原谅我,你并没有过时 - 因为有许多不涉及云的尖端技术。无论如何,无论你读到什么传统的“数据库”和“文件系统”,都无法应用于云连续体。在云连续统一资源转移中,消费者/客户转移。
Google云端存储不是传统数据库。它们的设计和调整适用于狡猾的玩家。
什么是云?当您从堪萨斯城,MO到埃及开罗打电话或数字连接时,路由器会为您寻找最佳路线。最适合你的路线?不,但是最大化利润的最佳途径。它可以通过海底电缆,卫星,未知领域等不断变换和重新配置。在谈话/连接的一些时刻可能需要更长的路线,因为它更便宜。这是一个很好的旧术语,叫做“虚拟”。
对于这样一个狡猾的虚拟世界,你不可能依赖传统的“文件系统”。你可以发起一场十字军东征/圣战,并坚持正如一些人正在通过坚持货币价值得到“真正的”黄金支持而摧毁全球虚拟金融体系的活动,这是徒劳的。
无论是谷歌存储,bigtable,亚马逊简单数据库等,它们都类似于“文件系统”地图,除了被配置为在一个狡猾的云上运行。因此,享受云并将“文件”作为资产存储在云端。
人类与宇宙的其他部分一起进化。进化是Gd的声音,现在云是印刷机出现以来人类进化的下一个阶段。你会被同化 - 抵抗是徒劳的。您希望您的文件由“真正的黄金”服务器支持吗?甚至“黄金”也是一种衍生价值,是一种虚拟资产,就像蒙娜丽莎的价值一样。您对“真实”文件系统的安全性/稳定性感知也是如此。