使用IOUtils.copy(fileInputStream, response.getOutputStream()); 之后前端怎么写
时间: 2024-09-26 09:18:11 浏览: 50
`IOUtils.copy(fileInputStream, response.getOutputStream())` 是Java标准库中的一种方便方法,它用于从一个输入流(fileInputStream)复制数据到另一个输出流(response.getOutputStream()),通常用于服务器向客户端发送文件。当这个方法执行后,文件已经被上传到了服务器,接下来前端需要编写JavaScript代码来触发文件的下载。
前端一般会在点击某个按钮或链接时发起一个HTTP请求,然后监听该请求的响应状态变化。下面是一个简单的HTML5 `a` 标签示例,结合JavaScript的fetch API来实现文件下载:
```html
<a id="downloadLink" href="#" download="下载的文件名">下载文件</a>
<script>
document.getElementById('downloadLink').addEventListener('click', function(e) {
e.preventDefault(); // 阻止默认链接跳转
fetch('/api/download?filename=your_filename', { // 替换'/api/download'为你实际的API路径
method: 'GET',
responseType: 'blob'
})
.then(response => {
if (!response.ok) {
throw new Error(`下载失败,状态码 ${response.status}`);
}
return response.blob();
})
.then(blob => {
URL.createObjectURL(blob).then(url => {
this.href = url;
document.execCommand('download'); // 触发浏览器下载文件
});
});
});
</script>
```
在这个例子中,当你点击"下载文件"链接时,会发起一个GET请求,服务端接收到请求后返回之前保存的文件流。前端拿到的是一个Blob对象,再将其转换成URL并通过`download`属性让浏览器下载文件。
阅读全文