无法打开从 akka http 服务器下载的八位字节流文件
can't open octet-stream files which is downloaded from akka http server
我创建了 akka 服务器,它在用户 post 一些 json 结构要切断时发送文件,但我无法打开服务器
发送的文件
Akka http 服务器(POST 方法)=> http://localhost:5004/download
val file = new File("src/main/resources/"+path)
HttpResponse(StatusCodes.OK,entity=HttpEntity.fromFile(ContentTypes.`application/octet-stream`,file = file)).withHeaders(
scala.collection.immutable.Seq(
RawHeader("Content-Disposition",s"attachment; filename=${file.getName}"),
RawHeader("Access-Control-Expose-Headers","Content-Disposition"),
RawHeader("Access-Control-Allow-Origin","*"),
)
)
Javascript/React代码
downloadFile = ()=>{
const tokenData = {
token:this.state.token,
password:this.state.password
}
axios.post("http://localhost:5004/download",tokenData).then(res=>{
var a = document.createElement('a');
console.log(res.data)
var blob = new Blob([res.data], {type:"application/octet-stream"});
a.href = window.URL.createObjectURL(blob);
a.download = res.headers["content-disposition"].split("=")[1];
a.click();
}).catch(res=>{
this.setState({
error:true
})
})
}
问题解决了!!
我只是用了 vanilla Fetch API 而不是 axios,我不知道 axios 有什么问题
我创建了 akka 服务器,它在用户 post 一些 json 结构要切断时发送文件,但我无法打开服务器
发送的文件Akka http 服务器(POST 方法)=> http://localhost:5004/download
val file = new File("src/main/resources/"+path)
HttpResponse(StatusCodes.OK,entity=HttpEntity.fromFile(ContentTypes.`application/octet-stream`,file = file)).withHeaders(
scala.collection.immutable.Seq(
RawHeader("Content-Disposition",s"attachment; filename=${file.getName}"),
RawHeader("Access-Control-Expose-Headers","Content-Disposition"),
RawHeader("Access-Control-Allow-Origin","*"),
)
)
Javascript/React代码
downloadFile = ()=>{
const tokenData = {
token:this.state.token,
password:this.state.password
}
axios.post("http://localhost:5004/download",tokenData).then(res=>{
var a = document.createElement('a');
console.log(res.data)
var blob = new Blob([res.data], {type:"application/octet-stream"});
a.href = window.URL.createObjectURL(blob);
a.download = res.headers["content-disposition"].split("=")[1];
a.click();
}).catch(res=>{
this.setState({
error:true
})
})
}
问题解决了!!
我只是用了 vanilla Fetch API 而不是 axios,我不知道 axios 有什么问题