FileUploader的uploadComplete-Event响应未定义

时间:2017-01-11 12:47:14

标签: javascript file-upload sapui5

我正在开发SAPUI5应用程序,并在我的应用程序中使用FileUploader控件将文档上载到服务器。上传工作,我也收到服务器的响应(我可以在Chrome的DevTools中看到这一点)。
问题是'uploadComplete'事件处理程序中的event-object总是为响应返回undefined参数。

你知道为什么会这样吗?我怎么解决它?

这是FileUploader的初始化:

var oFileUploader = new sap.ui.unified.FileUploader({
    uploadUrl: "/fileupload",
    name: "documentUploader",
    uploadOnChange: false,
    multiple: false,
    width: "400px",
    uploadComplete: this.onDocumentUploadComplete
});

这是'uploadComplete'事件处理程序:

onDocumentUploadComplete: function(oEvent) {
    var response = oEvent.getParameter("response");
    console.log(response);      // response = undefined
}

2 个答案:

答案 0 :(得分:0)

根据documentation,参数response受某些条件限制。

  

来自服务器的响应消息。在服务器端这个   回应必须放在" body"响应文档的标签   iFrame。它可以包含返回码和可选项   信息。这在跨域方案中不起作用。

这意味着服务器的响应必须是XML或HTML。

答案 1 :(得分:0)

我仍然没有弄清楚如何接收服务器的响应,但我找到了解决方法。
上传文件后,我只是向服务器发送请求并告诉它检查文件是否存在。<如果存在,则服务器返回“true”,如果不存在,则服务器返回“false”。这是我的代码:

// eventhandler for the "uploadComplete"-event of the FileUploader-control
onDocumentUploadComplete: function(oEvent) {
    var uploaderControl = oEvent.getSource();
    var documentname = uploaderControl.getValue();

    var fileURI = "/file/" + documentname + "?exists";
    $.get(fileURI, function(data) {
        if (data === "true") {
            console.log("Successfully uploaded: " + documentname);
            this.handleDocumentUploadSuccess(documentname);
        } else {
            console.log("Error when uploading document: " + documentname);
            this.handleDocumentUploadError(documentname);
        }
    }.bind(this));
}