我正在建立一个传输文件网站,但我正面临一个大问题!我正在与react.js express.js数字海洋空间合作。当我将文件拖到拖放区并点击提交时,文件应该上传到数字海洋空间,就像亚马逊 s3。所以,现在我可以毫无问题地上传文件,但是,如果我可以在通过 Express 将文件发送到数字海洋之前在 react 上压缩文件,那就更好了。这就是问题所在!我无法发送压缩文件!我已经用邮递员测试了 zip 文件的发送并且它可以工作,但是当我尝试使用 axios 从客户端(react)发送它时没有任何react。
请需要帮助:(我已经 3 天了,我一直在寻找如何使它工作但没有办法。非常感谢你们。
Upload.js 组件客户端(react):
export const upload = (form, callback = () => {}) => {
const url = `${apiURL}/upload`;
let files = _.get(form, 'files', []);
let data = new FormData();
const folderName = "upload";
let zip = new JSZip();
let content = zip.folder(folderName);
_.each(files, (file) => {
content.file(file);
})
zip.generateAsync({type:"blob"}).then(function(blob) {
data.append('files', blob);
});
data.append('to', _.get(form, 'to'));
data.append('from', _.get(form, 'from'));
data.append('message', _.get(form, 'message'));
const config = {
onUploadProgress : (event) => {
console.log('UPLOAD EVENT from Upload.js ', event);
return callback({
type : 'onUploadProgress',
payload : event
})
}
}
axios.post(url, data, config).then((response) => {
//upload success
return callback({
type : 'success',
payload : response.data
})
}).catch((err) => {
return callback({
type : 'error',
payload : err
})
});
}