java 使用response.getOutputStream()下载文件 设置 response.setHeader添加一层文件夹下载后并没有生成文件夹
时间: 2024-03-12 22:46:29 浏览: 116
如果使用 `response.setHeader()` 设置 Content-Disposition 响应头,添加文件夹名称后下载文件,但是下载后没有生成文件夹,这是因为浏览器不会自动创建文件夹,只会根据 Content-Disposition 中指定的文件名创建文件。因此,需要确保指定的文件名包含文件夹路径,以实现生成文件夹的效果。
你可以将文件夹名称和文件名拼接成一个完整的文件路径,并将其设置为 Content-Disposition 中的文件名,示例如下:
```java
String fileName = "example.txt";
String folderName = "downloads";
String contentType = "application/octet-stream";
String filePath = folderName + "/" + fileName;
response.setHeader("Content-Disposition", "attachment; filename=\"" + filePath + "\"");
response.setContentType(contentType);
ServletOutputStream outputStream = response.getOutputStream();
FileInputStream fileInputStream = new FileInputStream(new File(fileName));
byte[] buffer = new byte[1024];
int len;
while ((len = fileInputStream.read(buffer)) > 0) {
outputStream.write(buffer, 0, len);
}
fileInputStream.close();
outputStream.flush();
outputStream.close();
```
在以上示例中,文件名为 `example.txt`,文件夹名为 `downloads`,拼接后的完整文件路径为 `downloads/example.txt`。将该路径设置为 Content-Disposition 中的文件名,浏览器将会根据该路径创建文件夹并保存文件。
阅读全文