gpt4 book ai didi

javascript - 如何在 Salesforce 上使用 JSZip 从 Google Drive 下载多个文件作为 .zip

转载 作者:行者123 更新时间:2023-11-30 09:41:59 25 4
gpt4 key购买 nike

案例:在 Salesforce 平台上,我使用 Google Drive 通过配置的 Apex Google Drive API Framework 存储文件(本案例中的图像)。所以 Google Drive API 处理 authToken 等等。我可以在我的应用程序中上传和浏览图像。在我的例子中,我想选择多个文件并将它们下载到一个 zip 文件中。到目前为止,我正在尝试使用 JSZipFileSaver 库来做到这一点。使用下面的相同代码,我可以使用正确的响应 header 压缩和下载存储在其他地方的多个文件,但由于 CORS 错误,不能从 GDrive 中下载。

https://xxx.salesforce.com/contenthub/download/XXXXXXXXXX%3Afile%XXXXXX_XXXXXXXXX。请求的资源上不存在“Access-Control-Allow-Origin” header 。因此,不允许访问来源“https://xxx.visual.force.com”。 如果我只需单击此链接,文件就会开始下载。

有什么方法可以配置 GDrive 以启用响应 header :Access-Control-Allow-Origin: *Access-Control-Allow-Origin: https://*/mydomain .com 不知何故,或者我只需要使用其他东西,也许是服务器端压缩?现在我正在使用 Apex Google Drive API 提供的下载链接(看起来像这样:https://xxx.salesforce.com/contenthub/download/XXXXXXXXXXX%3Afile%XXXXXXXX), 当用作src="fileURL" 或直接粘贴时效果很好到浏览器。 GDrive 连接器添加“accesToken”等。

我的代码:

//ajax request to get files using JSZipUtils
let urlToPromise = (url) =>{
return new Promise(function(resolve, reject) {
JSZipUtils.getBinaryContent(url, function (err, data) {
if(err) {
reject(err);
} else {
resolve(data);
}
});
});
};

this.downloadAssets = () => {
let zip = new JSZip();
//here 'selectedAssets' array of objects each of them has 'assetFiles'
//with fileURL where I have url. Download and add them to 'zip' one by one
for (var a of this.selectedAssets){
for (let f of a.assetFiles){
let url = f.fileURL;
let name = a.assetName + "." + f.fileType;
let filename = name.replace(/ /g, "");
zip.file(filename, urlToPromise(url), {binary:true});
}
}
//generate zip and download using 'FileSaver.js'
zip.generateAsync({type:"blob"})
.then(function callback(blob) {
saveAs(blob, "test.zip");
});
};

我还尝试将 let url = f.fileURL 更改为 let url = f.fileURL + '?alt=media';&access_token=CURRENT_TOKEN 由 GDrive 连接器添加。

此链接由 GRDrive 连接器处理,所以如果我只是在浏览器中输入它,它就会下载图像。但是,对于使用 JS 进行的多次下载,我遇到了 CORS 错误。

最佳答案

我认为还不支持此功能。如果您检查 Download Files guide从 Drive API 中,没有提到一次下载多个文件。那是因为您必须为每个文件发出单独的 API 请求。这在 SO thread 中得到证实.

但是选择的多个文件被转换为单个 zip 文件并下载单个 zip 文件,这可以通过 google drive API 实现。那么如何将它们转换成单个 Zip 文件呢?请告诉我。

关于javascript - 如何在 Salesforce 上使用 JSZip 从 Google Drive 下载多个文件作为 .zip,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40692029/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com