Javascript 在SAPUI5应用程序中上载、读取、写入和下载HTML文件

Javascript 在SAPUI5应用程序中上载、读取、写入和下载HTML文件,javascript,html,file-upload,sapui5,Javascript,Html,File Upload,Sapui5,我想创建一个可以上传HTML文件的SAPUI5应用程序。下一步应该读取文件的内容。在标题标记之后,将在内容中插入额外的文本,新文件将可供下载。更清楚地说: 上载现有HTML文件 使用附加文本编辑HTML文件 使编辑的HTML文件可供下载 有什么想法吗 使用纯UI5很容易做到这一点,而不需要使用WebIDE之类的工具 您需要特别使用三个类: :用于上载文件的控件 :用于显示和编辑代码的控件(具有语法突出显示) :用于下载内容的实用程序类 假设您不想进行后端往返来读取文件,您也可以使用API 因

我想创建一个可以上传HTML文件的SAPUI5应用程序。下一步应该读取文件的内容。在标题标记之后,将在内容中插入额外的文本,新文件将可供下载。更清楚地说:

  • 上载现有HTML文件
  • 使用附加文本编辑HTML文件
  • 使编辑的HTML文件可供下载

  • 有什么想法吗

    使用纯UI5很容易做到这一点,而不需要使用WebIDE之类的工具

    您需要特别使用三个类:

    • :用于上载文件的控件
    • :用于显示和编辑代码的控件(具有语法突出显示)
    • :用于下载内容的实用程序类
    假设您不想进行后端往返来读取文件,您也可以使用API

    因此,您需要执行以下步骤:

  • 在视图中添加文件上载程序:
  • 
    
  • 在控制器中创建用于读取文件的处理程序:
  • onChangeFile:function(oEvent){
    var oModel=this.getView().getModel();
    var oReader=new FileReader();
    oReader.onload=函数(){
    oModel.setProperty(“/code”,或reader.result);
    }
    oReader.readAsText(oEvent.getParameter(“文件”)[0]);
    },
    
  • 添加代码编辑器控件和下载按钮:
  • 
    
  • 为下载本身创建一个处理程序:
  • onDownload:function(){
    var sText=this.getView().getModel().getProperty(“/code”);
    保存(sText,“下载”,“html”);
    }
    
    你可以在这里找到一把小提琴:


    以后编辑:

    如果您只需要在没有用户交互的情况下更改文件,那么您只需要执行步骤1和2。对于步骤2,处理程序可以如下所示:

    onChangeFile:function(oEvent){
    var oModel=this.getView().getModel();
    var oReader=new FileReader();
    oReader.onload=函数(){
    //用oReader做点什么结果。。。
    var sNewContent=oReader.result+“某物”;
    保存(sNewContent,“下载”,“html”);
    }
    oReader.readAsText(oEvent.getParameter(“文件”)[0]);
    }
    
    在线编辑HTML文件(如在SAP Web IDE中)是否需要一些额外的格式选项?或者仅仅一个文本区就足够了?嗨,塞尔维亚人!我真的不需要CodeEditor控件。应用程序应在标题标签后自动添加一些固定内容(例如),并准备好下载。这也可能吗?谢谢你,当然!您不一定需要使用代码编辑器本身。您可以立即下载或等待用户按下按钮。对于第一个案例,我编辑了答案。对于第二种情况,与代码编辑器相同(您只需将更新后的代码直接存储在JSONModel中,而不让用户自己更改代码),这听起来不错!还有一个问题:我尝试使用
    var content=oReader.result将html内容作为字符串获取
    after
    oReader.readAsText(oEvent.getParameter(“文件”)[0])。这对我不起作用。我做错了什么?
    readAsText
    方法是异步的。使用文件读取器的正确方法如示例所示,但要将回调附加到
    onload
    事件。