下面的代码是执行最后一个操作将数据保存到目标DB的代码。
const onFileUpload = (e) => {
const files = Array.from(e.target.files);
const formData = new FormData();
formData.append('attachable_type', attachableType);
formData.append('attachable_id', attachableId);
if (files.length > 0) {
const file = files[0];
formData.append('file', file);
upload(dispatch, {
body: formData,
}).then(() => {});
}
};
现在我正在构建一个离线应用程序,当没有互联网可用时,我想将此请求保存到indexdb。我有整个设置。我只想知道如何将一个FormData
示例保存到indexdb,以便以后可以从indexdb获取它并将其发送到服务器进行永久存储。我需要一些想法。我试过一些谷歌搜索,但我没有看到任何直接回答以下问题的答案。我正在使用idb
npm插件。下面的更新函数我将用来作为一个接口来与数据库对话。
export async function update(attrs) {
const db = await createAppDB();
const tx = db.transaction('attachments', 'readwrite');
const store = tx.objectStore('attachments');
store.put(attrs);
await tx.done;
}
2条答案
按热度按时间fdbelqdn1#
您可以通过
Body.formData()
方法提取FormData,然后通过获取此FormData的条目来检索其内容,并将这些条目存储到IDB:很遗憾,我们不能只将POST请求放在该高速缓存API中,这样会更干净...
aamkag612#
据我所知,你不能直接将任何FormData存储到IndexedDB中。在我的例子中,我不得不为一个离线应用程序实现照片上传。我将图片以base64格式与一些其他数据一起保存到IndexedDB中,然后在互联网连接恢复后将它们上传到服务器上。