我正在开发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
}
答案 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));
}