html获取ftp图片,并展示到前台

html是不能直接读取ftp服务器资源的(可以读取,但是会暴漏服务器的用户名密码,不建议这样做)所以我们需要后台做一下中转。

首先java读取ftp图片并转换为输入流。service代码如下:
//获取ftp链接
FTPClient ftp = FtpClientUtils.getConnectionFTP();
try {
ftp.setControlEncoding(“UTF-8”);
//图片存放路径
String path = FtpClientUtils.charSetChange(url.substring(0, url.lastIndexOf("/")));
//切换工作目录
boolean change = ftp.changeWorkingDirectory(path);
//切换失败,目录不存在
if(!change){
throw new BusinessException(“获取图片失败,图片地址错误!”);
}
//从ftp获取输入流
String fileName = FtpClientUtils.charSetChange(url.substring(url.lastIndexOf("/")+1));
ftp.enterLocalPassiveMode();
InputStream ins = ftp.retrieveFileStream(fileName);
return ins;
} catch (IOException e) {
e.printStackTrace();
throw new BusinessException(“上传失败,切换工作目录失败!”);
}
controller调取上面service代码,获取输入流,在controller中做如下处理即可:
try {
InputStream ins = fileUplodService.readImg(idCardNum, url, imgEnum);
if(ins==null){
return;
}
OutputStream out = response.getOutputStream();
byte[] buf = new byte[4096];
int length = 0;
while (-1 != (length = ins.read(buf, 0, buf.length))) {
out.write(buf);
}
out.flush();
out.close();
} catch (BusinessException e) {
// TODO: handle exception
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

在html中直接在img标签的src属性值为controller的请求地址即可。

你可能感兴趣的:(java)