我正在尝试向以压缩文件响应的Rails控制器方法发出请求。我如何提出前端Axios请求?
控制器方式:
include ActionController::Streaming
include Zipline
def index
respond_to do |format|
format.zip do
zipline([[@project.attached.url, "#{@project_name.parameterize}.pdf"]], "documents.zip")
end
end
end
如果使用视图,该怎么办:
= link_to "Download projects", company_projects_path(@company, format: :zip)
等效的axios请求是什么样的?这不起作用:
const handleClick = () => {
axios
.get(`/projects/${project.id}`, {
headers: { 'Accept': 'application/zip' }
})
.catch(e => console.log(e))
};
所以我发现这对我有用:
<a href={`/projects/${project.id}.zip`} download>Download all</a>
与其在onClick axios请求中使用将流式压缩文件流向按钮的按钮(这没有意义),而是简单地创建一个具有指向zip路径链接的锚标记将其下载。
正如max指出的那样,headers: { 'Accept': 'application/zip' }
将是访问它的正确格式,但是这样做没有任何意义。
编辑:
查看此答案。浏览器将抛出错误Resource interpreted as Document but transferred with MIME type application/zip
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句