Javascript Salesforce,Locker:不能";createObjectURL";使用不安全的[对象文件]

Javascript Salesforce,Locker:不能";createObjectURL";使用不安全的[对象文件],javascript,salesforce,salesforce-lightning,Javascript,Salesforce,Salesforce Lightning,我对离开公司的其他开发人员所做的lightning组件有一些问题,用户告诉我该工具在一个月前工作正常,但我不知道当时发生了什么 错误是: 此页有一个错误。您可能只需要刷新它。行动 失败:c:EMB_CCW_面板$controller$onPickFile[储物柜:无法 “createObjectURL”使用不安全的[object File]!]失败描述符: {c:EMB_CCW_面板$controller$onPickFile} javascript方法就是这个 onPickFile : fun

我对离开公司的其他开发人员所做的lightning组件有一些问题,用户告诉我该工具在一个月前工作正常,但我不知道当时发生了什么 错误是:

此页有一个错误。您可能只需要刷新它。行动 失败:c:EMB_CCW_面板$controller$onPickFile[储物柜:无法 “createObjectURL”使用不安全的[object File]!]失败描述符: {c:EMB_CCW_面板$controller$onPickFile}

javascript方法就是这个

onPickFile : function(component, event, helper) {
        var catalog = component.get("v.catalogWrapper");
        var brandsList = component.get("v.brandsList");

        console.log("onPickFile", catalog);
        var file = event.target.files[0];
        var fileURL = URL.createObjectURL(file);


        var req = new XMLHttpRequest();
        req.open('GET', fileURL);
        req.onload = function() {
            URL.revokeObjectURL(fileURL);
            component.set("v.catalogWrapper",
                helper.fillCatalogWithXMLData(catalog, helper.extractSlideNotesFromODTContentXML(this.responseXML), brandsList));
        };
        req.onerror = function() {
            URL.revokeObjectURL(fileURL);
            console.log('Error loading XML file.');
        };
        req.send();
    },
以及辅助方法

extractSlideNodeFromODTContentXML:function(xmlDoc){
var输出=[];
var slides=xmlDoc.getElementsByTagName(“绘图:页面”);

对于(var s=0;s来说,如果它在一个月前就可以使用,那么它可能是Salesforce在夏季发行版中修补的。不知道代码中有什么(如果有的话)是不安全的,但听起来像是被Lightning Locker服务击中了。在不同的浏览器中会得到相同的结果吗

如果您将组件的API版本敲回,看看它是否有效。这是一个黑客攻击,但在您确定该做什么时,可能是暂时的缓解

这表明文件是受支持的:

也许你需要以不同的方式读取文件的内容,也许你需要放弃用JavaScript解析它,转而使用服务器端的apex?我不知道你的功能是什么

如果您进入安装->lightning components->调试模式并自行启用,可能会有所帮助。您将在浏览器的开发人员工具中看到生成的更人性化的代码,调试可能会更简单。经验教训是要更加注意发布预览窗口(从9月12日开始,我们可以预览Winter'21的发布,SF应该在1-2周内发布相关博客)

这看起来很有希望:
也许你的代码需要合适的Aura访问器,
event.getSource().get(“v.files”)[0]
而不是
event.target.files[0]
。你真的需要调试它,并在浏览器的控制台中进行实验,看看有什么坚持住了。

如果它在一个月前起作用,它可能是Salesforce在夏季发布时修补的。不知道什么(如果有的话)在你的代码中是不安全的,但听起来像是被闪电锁服务击中了。你在不同的浏览器中得到相同的结果吗

如果您将组件的API版本敲回,看看它是否有效。这是一个黑客攻击,但在您确定该做什么时,可能是暂时的缓解

这表明文件是受支持的:

也许你需要以不同的方式读取文件的内容,也许你需要放弃用JavaScript解析它,转而使用服务器端的apex?我不知道你的功能是什么

如果您进入安装->lightning components->调试模式并自行启用,可能会有所帮助。您将在浏览器的开发人员工具中看到生成的更人性化的代码,调试可能会更简单。经验教训是要更加注意发布预览窗口(从9月12日开始,我们可以预览Winter'21的发布,SF应该在1-2周内发布相关博客)

这看起来很有希望: 也许您的代码需要合适的Aura访问器,
event.getSource().get(“v.files”)[0]
而不是
event.target.files[0]
。您确实需要调试它并在浏览器控制台中进行实验,看看有什么坚持住了