webservice 传输文件
来源:互联网 发布:淘宝 2.8mm 监控镜头 编辑:程序博客网 时间:2024/05/18 15:06
webservice文件上传下载(DataHandler 实现方式)
- 博客分类:
- webservice
测试环境:axis2-1.6.1、6.0.20、jdk1.5
说明:本方式仅适用于文件小于10M的场景(否则会出现内存溢出),大文件的上传下载应另选其他方式。
1、创建要发布成webservice的java类。
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- /*
- * DataHandler处理方式
- */
- public class BlobService2 {
- /*
- * 文件上传服务
- */
- public boolean uploadFile(String fileName,DataHandler dataHandler)
- {
- OutputStream os = null;
- try{
- os = new FileOutputStream("F:\\"+fileName);
- dataHandler.writeTo(os);//大附件也会出现内存溢出
- os.flush();
- }catch (Exception e){
- e.printStackTrace();
- return false;
- }finally{
- try {
- os.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- return true;
- }
- /*
- * 文件下载服务
- */
- public DataHandler downloadFile()
- {
- String filepath = "F:\\head.jpg";
- DataHandler dataHandler = new DataHandler(new FileDataSource(filepath));
- return dataHandler;
- }
- }
import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStream;import javax.activation.DataHandler;import javax.activation.FileDataSource;/* * DataHandler处理方式 */public class BlobService2 {/* * 文件上传服务 */ public boolean uploadFile(String fileName,DataHandler dataHandler) { OutputStream os = null; try{ os = new FileOutputStream("F:\\"+fileName); dataHandler.writeTo(os);//大附件也会出现内存溢出 os.flush(); }catch (Exception e){ e.printStackTrace(); return false; }finally{ try {os.close();} catch (IOException e) {e.printStackTrace();} } return true; } /* * 文件下载服务 */ public DataHandler downloadFile() { String filepath = "F:\\head.jpg"; DataHandler dataHandler = new DataHandler(new FileDataSource(filepath)); return dataHandler; }}
2、将上面的java类编译后的class文件放到axis2\WEB-INF\pojo目录下。
3、编写客户端程序。
- package client;
- import java.io.FileOutputStream;
- import java.util.Date;
- import javax.activation.DataHandler;
- import javax.activation.FileDataSource;
- import javax.xml.namespace.QName;
- import org.apache.axis2.addressing.EndpointReference;
- import org.apache.axis2.client.Options;
- import org.apache.axis2.rpc.client.RPCServiceClient;
- /*
- * 仅适用于小附件上传、下载,10M以下。
- */
- public class BlobRPCClient2
- {
- public static void main(String[] args) throws Exception
- {
- RPCServiceClient serviceClient = new RPCServiceClient();
- Options options = serviceClient.getOptions();
- EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/BlobService");
- options.setTo(targetEPR);
- //=================测试文件上传==================================
- String filePath = "f:\\head.jpg";
- DataHandler dataHandler = new DataHandler(new FileDataSource(filePath));
- //设置入参(1、文件名,2、DataHandler)
- Object[] opAddEntryArgs = new Object[]{"我是上传的文件.jpg", dataHandler};
- //返回值类型
- Class<?>[] classes = new Class<?>[]{ Boolean.class };
- //指定要调用的方法名及WSDL文件的命名空间
- QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadFile");
- //执行文件上传
- System.out.println(new Date()+" 文件上传开始");
- Object returnValue = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
- System.out.println(new Date()+" 文件上传结束,返回值="+returnValue);
- //=================测试文件下载==================================
- opAddEntry = new QName("http://ws.apache.org/axis2", "downloadFile");
- opAddEntryArgs = new Object[]{};
- classes = new Class<?>[]{ DataHandler.class };
- System.out.println(new Date()+" 文件下载开始");
- DataHandler returnHandler = (DataHandler) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0];
- FileOutputStream fileOutPutStream = new FileOutputStream("F:\\我是下载的文件.jpg");
- returnHandler.writeTo(fileOutPutStream);
- fileOutPutStream.flush();
- fileOutPutStream.close();
- System.out.println(new Date()+" 文件下载完成");
- }
- }
package client;import java.io.FileOutputStream;import java.util.Date;import javax.activation.DataHandler;import javax.activation.FileDataSource;import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;/* * 仅适用于小附件上传、下载,10M以下。 */public class BlobRPCClient2{ public static void main(String[] args) throws Exception { RPCServiceClient serviceClient = new RPCServiceClient(); Options options = serviceClient.getOptions(); EndpointReference targetEPR = new EndpointReference("http://localhost:8080/axis2/services/BlobService"); options.setTo(targetEPR); //=================测试文件上传================================== String filePath = "f:\\head.jpg"; DataHandler dataHandler = new DataHandler(new FileDataSource(filePath)); //设置入参(1、文件名,2、DataHandler) Object[] opAddEntryArgs = new Object[]{"我是上传的文件.jpg", dataHandler}; //返回值类型 Class<?>[] classes = new Class<?>[]{ Boolean.class }; //指定要调用的方法名及WSDL文件的命名空间 QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadFile"); //执行文件上传 System.out.println(new Date()+" 文件上传开始"); Object returnValue = serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0]; System.out.println(new Date()+" 文件上传结束,返回值="+returnValue); //=================测试文件下载================================== opAddEntry = new QName("http://ws.apache.org/axis2", "downloadFile"); opAddEntryArgs = new Object[]{}; classes = new Class<?>[]{ DataHandler.class }; System.out.println(new Date()+" 文件下载开始"); DataHandler returnHandler = (DataHandler) serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0]; FileOutputStream fileOutPutStream = new FileOutputStream("F:\\我是下载的文件.jpg"); returnHandler.writeTo(fileOutPutStream); fileOutPutStream.flush(); fileOutPutStream.close(); System.out.println(new Date()+" 文件下载完成"); }}
4、运行客户端程序,输出结果如下:
- Fri Mar 16 11:48:11 CST 2012 文件上传开始
- Fri Mar 16 11:48:11 CST 2012 文件上传结束,返回值=true
- Fri Mar 16 11:48:11 CST 2012 文件下载开始
- Fri Mar 16 11:48:12 CST 2012 文件下载完成
Fri Mar 16 11:48:11 CST 2012 文件上传开始Fri Mar 16 11:48:11 CST 2012 文件上传结束,返回值=trueFri Mar 16 11:48:11 CST 2012 文件下载开始Fri Mar 16 11:48:12 CST 2012 文件下载完成
http://huangqiqing123.iteye.com/blog/1455169
0 0
- 通过WebService传输文件
- webservice传输大文件
- java webservice 传输文件
- webservice 传输文件
- webservice传输文件
- WebService CXF --- 传输文件MTOM
- java 利用webservice传输文件
- 在 WebService 中采用 TSOAPAttachment 传输文件
- java—(6)OpenAdaptor:基于webservice传输大文件
- WebService传输DataSet的
- webservice 图片传输 服务端
- webservice 图片传输 客户端
- WebService 传输图片
- WebService压缩传输
- webservice二进制文件传输
- webservice 传输加密
- webservice xml 传输照片
- webservice 基于对象的传输
- 暑期个人赛--第六场--C(待A)
- 微信公众帐号第三方服务平台源码
- 每天起床时,优秀创业者都会问自己这3个问题
- hadoop学习之系统选择篇
- 如何成为一个合格的程序员
- webservice 传输文件
- 用Python实现一个简单的文件传输协议
- 初识Hadoop
- Vision引擎中光照类型介绍
- MsSQL的字段类型
- HTML表格练习
- Unbound classpath container: 'JRE System Library [jdk1.6.0_04]' in project
- Android开源代码解读のOnScrollListener实现ListView滚屏时不加载数据
- 不用重装系统 Windows 7下直接开启AHCI