fan*_*ynn 5 javascript api promise jszip redux-saga
我试图在通过 http 请求发送之前压缩文件列表。但我卡在这里了。
export default function zipTargetFiles(files) {
if (files.length <= 1) {
return files;
} else {
const zip = require('jszip')();
for (let i = 0; i < files.length; i++) {
zip.file(files[i].name, files[i]);
}
return zip.generateAsync({type:"blob"});
}
Run Code Online (Sandbox Code Playgroud)
}
基本上,该函数接收一个文件列表并尝试将它们压缩成一个单一的 .zip 文件。但是当我将它作为形成数据发送出去时,它给出了提交的数据不是文件的错误。
我检查了标题中的有效负载,目标字段为[object Promise]. 如何真正返回 .zip 文件?
现在我可以在 Redux-saga 中捕获 zip 文件,但是当我将它保存在我的数据库中时它没有提供扩展名,而是只提供名称为“blob”。
传奇.js
const file = yield call(zipTargetFiles, files);
const formData = new FormData();
formData.append("coversheet", file);
const reponse = yield call(apiRequest, formData);
Run Code Online (Sandbox Code Playgroud)
发生的事情是.generateAsync返回一个承诺。您必须等到承诺得到履行或拒绝才能使用数据。
Promises 是 JS 中处理异步操作时的核心概念。您可以在这里阅读有关承诺的更多信息
import zipTargetFiles from '/path'
zipTargetFiles( data ).then(file => {
// Access your file here
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4535 次 |
| 最近记录: |