java後臺以IO流的形式將檔案返回給前臺進行展示
阿新 • • 發佈:2018-11-11
後臺根據指定路徑將檔案以流的形式返回前臺進行展示
將本地磁碟的圖片檔案以流的形式返回給前臺,前臺可以用來進行圖片展示。
1.配置檔案內:配置路徑資訊
#圖片儲存路徑 本地磁碟C 下面的“XX資料夾”內放置上傳的檔案
import.file.savePath=c:/XX資料夾名
2.控制層:用@value註解注入檔案儲存路徑
//通過Value註解將儲存路徑注入,引數起別名為importPath
@Value("${import.file.savePath}")
private String importPath;
3.控制層:返回檔案流程式碼部分
@RequestMapping ("/GetFile")
public void getFile(HttpServletRequest request , HttpServletResponse response) throws IOException {
//讀取路徑下面的檔案
File file = new File(importPath);
File picFile = null;
for(File f : file.listFiles()){
if(f.getName().contains("檔名")){
//根據路徑獲取檔案
picFile = new picFile(f.getPath());
//獲取檔案字尾名格式
String ext = picFile.getName()substring(picFile.getName().indexOf("."));
//判斷圖片格式,設定相應的輸出檔案格式
if(ext.equals("jpg")){
response.setContentType("image/jpeg");
}else if(ext.equals("JPG")){
response.setContentType("image/jpeg");
}else if(ext.equals("png")){
response.setContentType ("image/png");
}else if(ext.equals("PNG")){
response.setContentType("image/png");
}
}
}
//讀取指定路徑下面的檔案
InputStream in = new FileInputStream(picFile);
OutputStream outputStream = new BufferedOutputstream(response.getOutputStream());
//建立存放檔案內容的陣列
byte[] buff =new byte[1024];
//所讀取的內容使用n來接收
int n;
//當沒有讀取完時,繼續讀取,迴圈
while((n=in.read(buff))!=-1){
//將位元組陣列的資料全部寫入到輸出流中
ouputStream.write(buff,0,n);
}
//強制將快取區的資料進行輸出
outputStream.flush();
//關流
outputStream.close();
in.close();
}
4.前臺接收流進行展示
<img src="/專案名/方法名"/>