【问题标题】:Upload file in appEngine really needed确实需要在 appEngine 中上传文件
【发布时间】:2011-10-01 23:13:53
【问题描述】:

我已经启动了一个项目,它是一个网络应用程序,让全世界都能听到我所有的个人歌曲。到目前为止,网站上所有可用的歌曲都存储在 war/songs 中。然后,我的数据库只存储该文件的路径,并且效果非常好。

我想创建一个只有管理员才能访问的网页(基本上是我 :D)来在这个位置上传我的歌曲,所以我不必为了添加歌曲而部署整个项目......而且我是现在读到在应用引擎中是不可能的?我不认为将歌曲存储在数据库中是个好主意吗?

我可以就我的问题谈谈你的看法吗?非常感谢!

另外,如果应用引擎不适合我的目标,我想知道一些托管我的 java 应用程序的好地方......这似乎很罕见!

再次感谢..

【问题讨论】:

  • 由于我的英语不好,我不太明白你的问题。你想做什么?存储歌曲但这些歌曲仅供您自己访问?也许你应该看看谷歌存储。 @zacheusz 的 Blobstore 解决方案也很好。上传到 Google 存储比上传到 Blobstore 方便得多。

标签: java google-app-engine upload


【解决方案1】:

在 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);

【讨论】:

  • 如何做到这一点的好例子。
【解决方案2】:

我真的很惊讶 IBM 是 Google 的忠实粉丝。我发现了大量与 Google 技术相关的 IBM 出版文献。嗯……为什么?

不管怎样,

  1. 对 IBM 有好处的对我也有好处: http://www.ibm.com/developerworks/java/library/j-gaestorage/

  2. 对 Google 有好处的东西对我也有好处。 Google 不希望您将文件存储在“文件系统”中。他们希望您使用他们的地图减少存储空间。

你错了——谷歌存储库技术优于你对“文件系统”的认知。首先,您需要阅读操作系统原理,尤其是“文件系统”部分。文件系统是 blob 的映射。

GAE 是一片云。 “云” - 不是桌面、Web 服务器、数据库服务器,也不是多个离散服务器的循环。云与服务器类似于模拟与离散 IC、连续累积智能(有些人“误称”称其为模糊逻辑)与离散 if-then-else 逻辑、量子动力学与牛顿力学。

连续统一体(或者至少是云试图成为的样子)。在连续体中(或尝试连续体),您无法存储“文件”。

你已经过时了。不,请原谅我,您并没有过时 - 因为有许多不涉及云的前沿技术。无论如何,您所读到的有关传统“数据库”和“文件系统”的任何内容都不能适用于云连续体。在云连续体资源转移中,消费者/客户转移。

谷歌云存储不是传统的数据库。它们专为狡猾的玩家设计和调整。

什么是云?当您从密苏里州堪萨斯城到埃及开罗拨打电话或进行数字连接时,路由器会为您寻找最佳路线。最适合您的路线?不,而是使他们的利润最大化的最佳途径。它可以穿越海底电缆、卫星、未知领域等,不断变化和重新配置。您的对话/连接可能需要更长的路线,因为它更便宜。这是一个很好的古老术语,称为“虚拟”。

对于这样一个多变的虚拟世界,您不可能依赖传统的“文件系统”。你可以发动一场十字军东征/圣战,并坚持就像一些疯子通过坚持货币价值由“真实”黄金支持而发起摧毁全球虚拟金融系统的运动一样,徒劳无功。

无论是 Google storage、bigtable、Amazon simple db 等,它们都类似于“文件系统”映射,除了被配置为在多变的云上运行。因此,尽情享受云端并将您的“文件”作为资产存储在云端。

人类与宇宙的其他部分一起进化。进化是 Gd 的声音,而现在,云是自印刷机出现以来人类进化的下一个阶段。你会被同化——抵抗是徒劳的。您希望您的文件得到“真正的黄金”服务器的支持吗?甚至“黄金”也是一种衍生价值,是一种虚拟资产,就像蒙娜丽莎的价值一样。您对“真实”文件系统的安全/稳定性认知也是如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2014-04-25
    • 1970-01-01
    • 2012-08-30
    • 2010-12-22
    • 1970-01-01
    • 2014-01-05
    相关资源
    最近更新 更多