1、首先进行文件上传下载的的ws操作首先要在我们的项目中添加activation.jar的jar包;
2、创建一个服务类
public class FileService {
//WS的文件上传与下载的服务类
Log log = LogFactory.getLog(FileService.class);
//创建一个基础 路径
public static String Repository = "./files";
//文件上传方法
public String putFile(DataHandler dh, String name) {
//判断上传时的文件名
if(name == null) {
name="test.tmp";
}
log.info("name:"+name);
try {
//上传的文件的路径是否存在
File dir = new File(Repository);
if(!dir.exists()) {
dir.mkdir();
log.info("makedDir :dir "+dir);
}
//获取上传文件的文件流
InputStream input = dh.getInputStream();
//创建一个保存文件输出流
FileOutputStream fos = new FileOutputStream(new File(dir,name));
//创建一个缓冲区
byte[] buffer = new byte[1024*4];
//读取文件的内容
int n = 0;
while((n=input.read(buffer))!=-1) {
fos.write(buffer,0,n);
}
input.close();
fos.close();
} catch( Exception e ) {
e.printStackTrace();
}
return " File: " +name + " send ok ";
}
//创建文件的下载方法
public DataHandler[] getFile(String name) {
log.info("下载的文件名:"+name);
File dir = new File(Repository);// 指明文件的下载目录
if(!dir.exists()) {
dir.mkdir();
}
if(name!= null && !name.equals("")) { //符合条件的文件下载
File data = new File(dir, name);
if(data.exists()) { //确保下载的目录和文件存在
DataHandler[] handlers = new DataHandler[1]; //每次使用一个传输器
handlers[0] = new DataHandler(new FileDataSource(data));//将服务器端的文件包装成数据对象,使用传输器进行传输
log.info("handlers : " + handlers + "[" + handlers.length+"}");
return handlers; //返回传输器
} else {
log.info("return null");
return null;
} else {
//下载的文件名出现了错误
File[] files = dir.listFiles();
DataHandler[] handlers = new DataHandler[files.length]; //准备下载文件夹中的所有的文件
for(int i=0; i handlers[i] = new DataHandler(new FileDataSource(files[i])); //为每一个文件创建下载的流 } log.info("handlers :" + handlers + "[" +handlers.length+"}"); return handlers; //返回传输器,返回的是多个文件的传输器对象。 } } } 配置server-config.wsdd文件