从OAS Server将大文件下载到PC

时间:2009-08-07 20:57:00

标签: oracle forms oracle10g downloading

我们在Solaris OAS服务器上运行Oracle 10g表单应用程序,表单显示在IE中。部分应用程序涉及使用Oracle的webutil实用程序从PC上传和下载文件(主要是Word文档和PDF)到OAS服务器。

问题在于大文件(超过25Megs左右),需要很长时间,有时需要很长时间。上传似乎工作,即使有大文件。但是,下载大文件会导致下载错误。

我在我们的开发系统中使用189Meg文件进行测试。使用WEBUTIL_FILE_TRANSFER.Client_To_DB(或Client_To_DB_with_Progress),大约24Megs后下载会出错。我切换到WEBUTIL_FILE_TRANSFER.URL_To_Client_With_Progress,最后得到整个文件下载,但花了22分钟。没有进度条就没那么把它缩短到18分钟,但那仍然太长了。

我可以在浏览器中显示文件,我的测试文件大约在5秒内显示,但需要下载许多文件进行编辑然后重新上传。

有关如何更快地完成上传和下载的任何想法?在这一点上,我几乎可以接受任何想法,无论它是否使用webutil。至少在某种程度上属于Oracle原生的解决方案是首选,但我会建议。

谢谢, AndyDan

2 个答案:

答案 0 :(得分:0)

这可能完全是午餐,但既然你正在寻找任何可能有帮助的想法,那么这就是我的。

首先,我假设文件的实际编辑发生在浏览器之外,并且您只是想要一种更好的方式来回传送文件。

在这种情况下,我过去使用过的一个选项就是使用Apache或任何其他您喜欢的vanilla Web服务器来路由Web应用程序。要下载,请创建一个唯一的文件会话令牌,在Web应用程序中记住它,并将该令牌(例如< unique token> .doc)命名的文件副本放在Apache可见的下载目录中。然后提供指向将通过Apache提供的文件的链接。

对于上传,您有几个选择。一种是使用你已经获得的机制,然后在上传文件时,你只需匹配名称中的令牌就可以将文件修补回存档。或者,您可以创建一个与应用程序分开的非常简单的文件上载表单,该表单将通过Apache将文件上载到临时目录,然后将用户路由回应用程序并以URL HTTP GET样式提供令牌,或者在cookie中。

在您遇到所有麻烦之前,您需要确保您的vanilla Web服务器提供比当前解决方案更好的上传和下载速度和可靠性,但它应该。

顺便说一句,我不知道您使用的应用程序服务器是否提供HTTP压缩,但如果确实如此,您应该确保它已启用并正常工作。这可能是你可以做的最好的单一事情来提高大文件的传输速度,假设它们是相当可压缩的。如果您的应用程序服务器不支持它,那么大多数任何vanilla Web服务器都将支持它。

我希望有所帮助。

答案 1 :(得分:0)

我最终使用CLIENT_HOST来调用FTP命令来下载文件。我的189MB测试文件使用WEBUTIL_FILE_TRANSFER.URL_To_Client_With_Progress下载需要20-22分钟,使用FTP只需要20秒。这不是最好的解决方案,因为它会暂时将PC密码暴露在PC上,但只能在下载时使用,即使这样,用户也必须知道在哪里找到它。

因此,我们现在正在实施此项目,并寻求更安全但仍然具有高性能的长期解决方案。