我有一个Reaction客户端和一个Node服务器.当我向服务器发送POST请求时,服务器应该压缩文件夹并将其下载到客户端.这是做不到的.将损坏的存档下载到客户端. 此外,服务器上的存档创建正确.
下面的代码示例 Reaction客户端
function test() {
fetch("http://localhost:5000/download", {
method: 'POST'
})
.then(res => res.blob())
.then(data => {
let url = URL.createObjectURL(data)
let anchor = document.createElement('a')
anchor.href = url
anchor.download = 'ex_new.zip'
document.body.appendChild(anchor)
anchor.style = 'display: none'
anchor.click()
anchor.remove()
URL.revokeObjectURL(url)
document.removeChild(anchor)
})
}
function App() {
return (
<button onClick={() => test()}>Test</button>
);
}
export default App;
node 服务器
const archiver = require("archiver")
const express = require("express")
const cors = require("cors")
const fs = require("fs")
const path = require('path')
const app = express()
app.use(cors())
app.post("/download", (req, res) => {
const archive = archiver('zip')
archive.directory('output')
archive.finalize()
const output = fs.createWriteStream(__dirname + '/ex.zip')
archive.pipe(output)
return res.download('/home/user/Js', 'ex.zip')
})
app.listen(5000, () => console.log("Server start"))