手机版 欢迎访问魄力云云市场资讯网站

当前位置:主页 > 虚拟主机 >

企业邮箱_做网站建设公司_试用

时间:2021-09-28 11:15:14|来源:魄力云|编辑:魄力云|点击:

几天前,我偶然发现在我们的SAPUI5应用程序中至少实现了3种不同的方式来开始下载文件。这三种方法在桌面浏览器和sapfiori客户端中产生了不同的行为。我想知道,为什么会发生这种情况,以及是否有一个最好的方式启动下载在所有情况下(,没有!)。

如果您很匆忙或者只是对我的测试结果的细节不感兴趣,没关系,跳过接下来的10个标题,向下滚动到我的结论。

前言

我记得的第一件事是,服务器可以为响应标题"content disposition"提供两个不同值的文件。如果它是"内联"的,浏览器应该把它作为一个提示来显示文件(如果可能的话)。所以第二件事是要认识到,在这种情况下,行为取决于文件格式。如果是pdf、jpg或gif等常见的web格式(或者如果用户安装了其他插件来显示不常见的文件),浏览器将不会向用户提供保存对话框。如果content disposition设置为"attachment",则浏览器不应显示该文件,而应将其保存到文件系统中。Chrome和其他浏览器非常严格地遵循这一规则,例如,如果您使用sap.m.PDFViewer并将源设置为一个文件,该文件随内容处置"附件"一起交付,Bowser将下载该文件而不是显示它。

这些发现使我找到了一个可能组合的四维矩阵,我要检查:

(下载启动方式)×(浏览器/设备)×(文件格式)×(内容配置值)

在我的研究过程中,我发现了6个绝望的算法来启动下载。其中三个可以参数化以加载到新窗口/选项卡或不加载。所以我们至少有9种方法。如果你知道更多的可能性,请随时在评论部分分享。

我编写了一个小的SAPUI5应用程序来测试我在macOS X 10.13.6上的Chrome 68、Firefox 61和Safari 11、iOS 11.4.1上的Safari和sapfiori Client 1.11.4以及Win 8.1上的IE 11的实现(是的,我们的一些客户仍然使用它!)。这就形成了6种不同的浏览器/设备。我将该应用程序部署到运行SAPUI5版本1.54的SAP云平台上托管的Fiori启动板上。你可以从GitHub下载应用程序,但是你必须将自己的url添加到页面底部的不同下载文件中下载test.controller.js因为我不能访问我的测试系统。

我测试了jpg,pdf,txt(从现在起我称它们为通用的web格式),云服务器如何,docx,xcf(作为不太常见的文件格式的一个例子),zip和错误的URL。这是7.

9×6×7×2=756

这将是大量的点击测试,物联网展,我决定在第一轮测试中使用macOS上的Chrome和iOS上的SAP Fiori客户端(还剩252次点击),并且只使用其他浏览器和设备测试我的高评价实现。

所以这里是我的第一种方法:

1)使用HTML a元素下载

什么这里发生的情况是,我们创建一个a元素,将它的href属性设置为URL,定义它不应该显示,将它添加到文档体(这会给您一个ESLint警告,因为我们不应该以这种方式操作文档对象模型),调用它的click函数并再次将它从文档体中删除(再次出现ESLint警告)。这也可以通过jQuery轻松完成。但为了易读性,我选择了这个变体。

在iOS上使用SAP Fiori客户端进行测试时,无论内容配置的值如何,都会显示pdf、jpg、txt和docx。SAPUI5应用程序已离开,没有显示任何操作,您无法向任何方向滑动以导航回。您必须通过双击表面打开Fiori客户端菜单并选择"后退"。

这将从头开始加载先前留下的SAPUI5应用程序,这需要一些时间。奇怪的是,通过点击xcf或zip链接,一条"页面找不到"的错误信息出现了,这也是错误的网址显示出来的。

这绝对不是我想给任何客户的。

当在macOS上使用Chrome进行测试时,我们会对两个不同的内容配置值有不同的反应。"attachment"会将每个文档下载到文件系统,"inline"会显示常见的web格式,并下载所有其他格式。对于不正确的URL,Chrome会在同一个选项卡中显示错误页,您必须重新加载SAPUI5应用程序并返回。这不是一个完美的用户体验。

2)使用HTML a-element和target="\u blank"

下载这里发生的情况与1)中的几乎相同,中国移动物联网,只是我们在第3行告诉客户端在新窗口/选项卡中打开链接。

在iOS上使用SAP Fiori客户端进行测试时,所有文件都以某种形式显示(如果无法显示,则显示内容或文档图标)不管内容配置的值是多少。提供了关闭预览和调用设备上可用操作(如共享或保存)的按钮。

甚至可以查看zip文件。

当您单击"完成"时,预览应用程序将关闭,您将立即返回到SAPUI5应用程序。通过点击一个不正确的URL,SAP Fiori客户端会显示一个合理的错误对话框,作为一个弹出窗口,可以很容易地关闭。

这绝对是我会发送给客户的东西!

云主机服务商 Ucloud云计算 移动云数据 云存储服务器 Ucloud云主机 云计算提供商 阿里数据库 服务器租用 云储存服务器 Web云服务器 ucloud云数据库 独享云主机 云服务器服务商 海外云存储 云服务器主机 云计算解决方案 国内云存储 数据库云平台

Copyright © 2002-2020 魄力云 版权所有

备案号:豫ICP备56298345号