如果通过 setValue 设置要上传的文件,则不会触发 SAPUI5 Fileuploader 上传

SAPUI5 Fileuploader upload not triggered if file to upload is set via setValue

在 SAP 中UI5 我正在使用 fileuploader 将文件上传到网关服务。

如果我通过按 "Browse" 按钮使用 select 文件,则功能有效,但是如果我使用 setValue() 设置文件路径,然后调用 upload() 函数,文件不触发上传。浏览器没有错误。

如果我按下上传按钮,这是相同的行为,但未设置文件路径。我怀疑我需要设置一些额外的东西,但我不知道那是什么。下面是代码

UI

<u:FileUploader id="fileUploader" 
                tooltip="Select file to upload" 
                width="415px" 
                icon="sap-icon://add-document"
                uploadOnChange="false" 
                sendXHR="true" 
                uploadUrl="/sap/opu/odata/sap/ZUPLOAD_DOC_SRV/Upload_DocSet" 
                useMultipart="false"
                uploadStart="onUploadStart" 
                uploadComplete="handleUploadComplete" 
                sameFilenameAllowed="true" 
                change="onChange"/>

控制器

var oFileUploader = this.byId("fileUploader");
oFileUploader.removeAllHeaderParameters(oCustomerHeaderToken);
oFileUploader.setValue("C:\TEMP\test.txt");           

oCustomerHeaderToken = new sap.ui.unified.FileUploaderParameter({
    name: "x-csrf-token",
    value: oFileUploader.getModel().getSecurityToken()
});

oFileUploader.addHeaderParameter(oCustomerHeaderToken);
var oSlug = new sap.ui.unified.FileUploaderParameter({
        name: "slug",
        value: slugTemp
    });


oFileUploader.addHeaderParameter(oSlug);
oFileUploader.upload();

有人可以帮我解决这个问题吗?

出于安全原因,浏览器 JavaScript 不允许这样做。这与UI5无关,是一般的安全措施。

如果允许脚本可以通过生成随机路径访问您的所有文件,读取它们并将它们上传到任何服务器。

在某些浏览器中可以 access a sandboxed environment 但这不太可能对您有所帮助。

访问整个硬盘是不可能的(目前)。