axios请求可以用于从Rails端点获取zip文件吗



我试图向一个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请求的按钮来将压缩文件流式传输到该按钮(这毫无意义(,只需创建一个链接到压缩路径的锚标记即可下载该文件。

正如max所指出的,headers: { 'Accept': 'application/zip' }是访问它的正确格式,但这样做没有意义。

编辑:

签出这个答案。浏览器将抛出错误Resource interpreted as Document but transferred with MIME type application/zip

最新更新