如何直接获取到HttpServletResponse中的文件,并将文件保存到指定的位置。代码中请不要使用response.getInputStream()的方式,封装成可直接使用且不会报错的工具类
时间: 2023-07-16 13:15:29 浏览: 81
如何HttpServletRequest文件对象并储存
可以使用以下工具类来获取HttpServletResponse中的文件并保存到指定位置。
```java
import javax.servlet.http.HttpServletResponse;
import java.io.*;
public class FileUtil {
/**
* 从HttpServletResponse中获取文件并保存到指定位置
*
* @param response 文件响应对象
* @param filePath 文件保存路径
* @throws IOException IO异常
*/
public static void saveFileFromResponse(HttpServletResponse response, String filePath) throws IOException {
// 获取文件流
InputStream inputStream = response.getInputStream();
BufferedInputStream bis = new BufferedInputStream(inputStream);
// 创建文件夹
File file = new File(filePath);
File fileParent = file.getParentFile();
if (!fileParent.exists()) {
fileParent.mkdirs();
}
// 写入文件
FileOutputStream fos = new FileOutputStream(file);
BufferedOutputStream bos = new BufferedOutputStream(fos);
byte[] buffer = new byte[1024];
int len;
while ((len = bis.read(buffer)) > 0) {
bos.write(buffer, 0, len);
}
// 关闭资源
bos.flush();
bis.close();
inputStream.close();
bos.close();
fos.close();
}
}
```
使用方法如下:
```java
HttpServletResponse response = ... // 获取HttpServletResponse对象
String filePath = "C:/example/file.txt"; // 指定文件保存路径
try {
FileUtil.saveFileFromResponse(response, filePath);
} catch (IOException e) {
e.printStackTrace();
}
```
阅读全文