【问题标题】:Save As Dialog in Ext JsExt Js 中的另存为对话框
【发布时间】:2018-10-22 12:52:02
【问题描述】:


请问Ext Js Modern中是否有“另存为”对话框?所以我可以将网页中的对象保存到本地文件中。

【问题讨论】:

  • 您不能花 5 秒时间在 google 中输入“extjs dialog”吗? docs.sencha.com/extjs/6.5.0/modern/Ext.Dialog.html。您的其他问题也已在多个地方得到解答
  • 这不是我需要的!!我在 Sencha 中足够好,这个对话框与问题中描述的不一样!!!!我不认为它是在 Ext Js 中实现的。但可能其他人已经这样做了......
  • 在另存为中需要什么?对话框可以有文本和按钮,或者你可以有一些配置较少的东西,例如docs.sencha.com/ext/6.5.1/classic/Ext.MessageBox.html。你当然必须自己做保存逻辑。
  • 我给 Sencha 发了电子邮件,他们告诉他们没有保存为组件。他们给了我其他取决于浏览器本身的解决方案。这也不是我要找的。因此,我将尝试找到更好的解决方案,并在准备好后发布它
  • 广泛支持在锚标签上创建 Blob url 和“下载”属性,我会尝试将它们组合起来。或 File API,但我认为支持较少。

标签: javascript extjs6-modern


【解决方案1】:

一种解决方案(取决于 Web 浏览器,并非所有浏览器都支持!)使用 Mozilla API(文件和 BLOB),例如: https://developer.mozilla.org/en-US/docs/Web/API/File/Filehttps://developer.mozilla.org/en-US/docs/Web/API/Blob

【讨论】:

    【解决方案2】:

    另一种解决方案取决于 Portlet 概念:

    1. 在 ViewController 中,您会触发一个事件,例如“downloadFile”
    2. 在主控制器中,您捕获事件并执行函数“downloadFile”并调用函数,让它具有相同的名称
    3. AjaxController(Ext.app.Controller) 你调用函数doStandardSubmit

      location.href = this.url + '&operation=download&param1=' + param1val;

    4. 在 portlet (Java) 的后端编写 endPOint 方法:

      @EndpointMethod(encode = false) 公共无效下载(DataAccessor dataAccessor,AuthenticationGenerationConfiguration 配置, @RequestKey String param1,ResourceResponse 响应)抛出 IOException {

      输出流 outputStream = response.getPortletOutputStream(); 试试 {

                  // Adjusting content type
                  response.setContentType("text/plain");
                  response.setProperty("Content-Disposition", "attachment; filename=\"" + FILENAME + "\"");
                      outputStream.flush();
              } finally {
                  outputStream.close();
              }
          }
      

    【讨论】:

    • 这是否可以触发浏览器上的下载?我发现即使在我的项目中有内容处置等,我仍然需要做一些额外的事情来触发一个(如果这样做会很酷,然后我可以重新检查我的项目)
    • 否,这将触发操作系统显示另存为对话框。它是安全的,因为它不依赖于浏览器。我必须对其进行更多测试以增强它
    • 是的,但是在正常的 ajax 调用中它不会触发下载 - 请参阅 stackoverflow.com/a/32318930/414062
    • AJAx 调用将触发编写在portlet 中的下载功能。它会反过来触发下载。
    猜你喜欢
    • 2012-05-02
    • 2015-01-08
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多