首先获取图片
获取图片
package com.gmt.action;
import java.io.InputStream;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.gmt.ftp.util.ApacheFtpUtil;
import com.gmt.redis.UploadRedisManager;
import com.opensymphony.xwork2.ActionSupport;
public class ShowAtlasAction extends ActionSupport{
private static final long serialVersionUID = 1L;
private long imageId ; //图片的id
private long folderId;//文件夹名
public long getImageId() {
return imageId;
}
public void setImageId(long imageId) {
this.imageId = imageId;
}
public long getFolderId() {
return folderId;
}
public void setFolderId(long folderId) {
this.folderId = folderId;
}
public String viewImages(){
ApacheFtpUtil.downFiles(folderId,imageId);
return null;
}
//这个方法只适合查询少量的图片,少量不能大于ftp服务器连接的的最大值
public String test(){
ServletOutputStream output = null;
InputStream input = null;
try {
HttpServletResponse response = ServletActionContext.getResponse();
input = ApacheFtpUtil.downFile(folderId,imageId);
output = response.getOutputStream();
response.setContentType("image/jpeg");
byte imageArray[] = new byte[4064];
int len = 0;
while((len = input.read(imageArray)) != -1){
output.write(imageArray, 0, len);
}
output.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (input != null) {
input.close();
}
if (output != null) {
output.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
/**查询自制关卡*/
public String showUpload(int id){
ServletOutputStream output = null;
try {
HttpServletResponse response = ServletActionContext.getResponse();
output = response.getOutputStream();
response.setContentType("image/jpeg");
byte [] uploadImageArray = UploadRedisManager.getUpLoadIMG(id);
output.write(uploadImageArray);
output.flush();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (output != null) {
output.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
}
调用从FTP获取图片的流的方法
package com.gmt.ftp.util;
import java.io.*;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import com.gmt.init.Key;
/**
* 此类提供对完调用的方法
*
* */
public class ApacheFtpUtil {
public static void main(String args[]) throws Exception{
//testUpload();
//testDownload();
FtpUtil ftpUtil=new FtpUtil();
ftpUtil.connectServer("192.168.1.108", 2121, "admin", "admin", null);
//获得ftp服务器上目录名称为DF4下的所有文件名称
// List<String> list=ftpUtil.getFileList("/400000/");
// System.out.println("文件名称列表为:"+list);
//上传本地D盘文件aaa.txt到服务器,服务器上名称为bbb.txt
// boolean back = ftpUtil.uploadFile("d:" + File.separator + "zbs.txt", "/DF4/zbshh.txt");
// System.out.println("上传是否成功="+back);
//从服务器上下载文件bbb.txt到本地d盘名称为ccc.txt
//
// boolean back = ftpUtil.download("eee.txt", "d:" + File.separator + "fff.txt");
// System.out.println("上传是否成功="+back);
//
//删除ftp服务器上文件:bbb.txt
//ftpUtil.deleteFile("bbb.txt");
// boolean back = ftpUtil.createDirect