أواجه مشكلة مع XMLHttpRequest ، أعتقد أنه عندما أنتقل إلى localhost / dashboard / downloadfile؟ file-name = hw3.txt يتم تنزيل الملف محليًا ولكن إذا كنت تستخدم الوظيفة checkDownload () لبدء XMLHttpRequest ، فلن يتم تنزيل الملف .
إليك رمز العميل:
function checkDownload() {
const filename = "hw3.txt";
const xhr = new XMLHttpRequest();
xhr.responseType = "blob";
xhr.open('GET', `/dashboard/downloadfile?file-name=${ filename }`);
xhr.onreadystatechange = () => {
if(xhr.readyState === 4) {
if(xhr.status === 200) {
}
}
}
xhr.send();
}
ثم هنا هو رمز الخادم الخاص بي:
app.get('/dashboard/downloadfile', requiresLogin, (req, res) => {
const userid = req.user.id;
const filename = req.query['file-name'];
db.getFileKey([userid, filename], (keyres) => {
const params = {
Bucket: S3_BUCKET,
Key: keyres.rows[0].filekey,
};
res.setHeader('Content-disposition', `attachment; filename=${ filename }`);
res.setHeader('Content-type', `${ mime.getType(keyres.rows[0].filetype) }`);
s3.getObject(params, (awserr, awsres) => {
if(awserr) console.log(awserr);
else console.log(awsres);
}).createReadStream().pipe(res);
});
});