博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebService完成文件上传下载
阅读量:5291 次
发布时间:2019-06-14

本文共 6834 字,大约阅读时间需要 22 分钟。

由于开发需要使用webservice,第一个接触的工具叫axis2。项目开发相关jar。

 

service端:

启动类:

import java.net.InetAddress;import javax.xml.ws.Endpoint;public class StartService {    public static void main(String[] args)     {        try {            //获取当前IP            String ip = InetAddress.getLocalHost().getHostAddress();            //将服务发布到指定路径            System.out.println("IP:" + ip);            String relativelyPath=System.getProperty("user.dir");            System.out.println(relativelyPath);            Endpoint.publish("http://"+ip+":9527/webservice/CBRC", new WebServiceImp());            System.out.println("webservice 发布成功!");        } catch (Exception e) {            System.out.println("webservice 发布失败!");            ;        }    }}

 

实现类:

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import javax.jws.WebService;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;//import Decoder.BASE64Decoder;//import Decoder.BASE64Encoder;@WebServicepublic class WebServiceImp {    public String sendFile(String name,String file) throws Exception     {        //上传文件        String preference_path = "/webserviceupload";        String relativelyPath=System.getProperty("user.dir");        //存储路径        String fileupload = relativelyPath + preference_path;        File filepath = new File(fileupload);        if (!filepath.exists()) {            filepath.mkdirs();        }                /**         *生成上传文件         */        FileOutputStream fos = null;        try {            fos = new FileOutputStream(fileupload + File.separator + name);            byte[] filebs = new BASE64Decoder().decodeBuffer(file);            fos.write(filebs);        } catch (Exception e) {            e.printStackTrace();        } finally {            fos.close();        }        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("the file "+name+" was gotten !!");        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("----------------------------------------------------------------------------------------");                        int splitIndex = name.lastIndexOf(".");        String newName = name.substring(0,splitIndex) + ".pdf";        TransferToPDFUtil.PdfManager(fileupload +File.separator+ name, fileupload +File.separator+ newName);        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("finish file transfer");        System.out.println("----------------------------------------------------------------------------------------");                /**         * 上传文件到客户端         */        File loc_file = new File(fileupload +File.separator+ newName);        FileInputStream fis = null;        String out = null;        try {            fis = new  FileInputStream(loc_file);            byte[] bs = new byte[(int)loc_file.length()];            fis.read(bs);            out = new BASE64Encoder().encode(bs);            fis.close();        } catch (FileNotFoundException e) {            e.printStackTrace();        }                System.out.println("----------------------------------------------------------------------------------------");        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("return CBRC");        System.out.println("----------------------------------------------------------------------------------------");        System.out.println("----------------------------------------------------------------------------------------");                return out;    }    }

 

client端:

import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import javax.xml.namespace.QName;import org.apache.axis2.addressing.EndpointReference;import org.apache.axis2.client.Options;import org.apache.axis2.rpc.client.RPCServiceClient;import sun.misc.BASE64Decoder;import sun.misc.BASE64Encoder;public class CBRC {  public static void main(String[] args) throws Exception {             // 使用RPC方式调用WebService      RPCServiceClient serviceClient = new RPCServiceClient();      Options options = serviceClient.getOptions();      EndpointReference targetEPR = new EndpointReference(              "http://10.74.3.191:9527/webservice/CBRC?wsdl");// 指定调用WebService的URL      options.setTo(targetEPR);            // RPCServiceClient类的invokeBlocking方法调用了WebService中的方法。invokeBlocking方法有三个参数,其中第一个参数的类型是QName对象,表示要调用的方法名;第二个参数表示要调用的WebService方法的参数值,参数类型为Object[];第三个参数表示WebService方法的返回值类型的Class对象,参数类型为Class[]。当方法没有参数时,invokeBlocking方法的第二个参数值不能是null,而要使用new Object[]{}。            /*String endpoint = "http://10.74.3.191:9527/webservice/CBRC?wsdl";        //此处为wsdl地址        Service service = new Service();        Call call = (Call) service.createCall();        call.setTargetEndpointAddress(new URL(endpoint));        //setOperationName 方法 Qname 前一个参数为设置namespace,后一个参数为设置想要访问的方法        call.setOperationName(new QName("http://wtp/","sendFile"));            //addParameter 方法即为添加元素的方法        call.addParameter("arg0",org.apache.axis.encoding.XMLType.XSD_DATE,javax.xml.rpc.ParameterMode.IN);        call.addParameter("arg1",org.apache.axis.encoding.XMLType.XSD_STRING,javax.xml.rpc.ParameterMode.IN);        //设置返回值类型        call.setReturnType(XMLType.XSD_STRING); */                 /**         * 上传文件         */        File xml1 = new File("C:\\Users\\lenovo\\Desktop\\1.doc");           FileInputStream fis1 = new FileInputStream(xml1);           byte[] bytes1 = new byte[(int)xml1.length()];           fis1.read(bytes1);        //将byte数组转换为base64字符串           String base64file = new BASE64Encoder().encode(bytes1);           fis1.close();        //访问目标方法//        String result = (String) call.invoke(new Object[]{"1.doc",base64file});        //指定方法返回值的数据类型的Class对象        Class[] classes = new Class[] { String.class };// 指定getGreeting方法返回值的数据类型的Class对象                  QName opAddEntry = new QName("http://wtp/","sendFile");// 指定要调用的getGreeting方法及WSDL文件的命名空间           Object[] opAddEntryArgs = new Object[]{"1.doc",base64file};// 指定getGreeting方法的参数值           String result = serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs, classes)[0].toString();        /**         * 下载文件         */        FileOutputStream fos = new  FileOutputStream("C:\\Users\\lenovo\\Desktop\\1.pdf");        fos.write(new BASE64Decoder().decodeBuffer(result));        fos.close();                System.out.println("end");    }  }

 

原文引用:

   

其他参考:

   

 

转载于:https://www.cnblogs.com/Dream2hc/p/java0254307.html

你可能感兴趣的文章
在eclipse中添加和删除项目
查看>>
Search a 2D Matrix & II
查看>>
网站更新后客户端缓存问题
查看>>
Android OpenGL ES(四)关于EGL .
查看>>
thinkphp整合系列之苹果AppStore内购付款的服务器端php验证
查看>>
C# Oracle批量插入数据进度条制作
查看>>
SQL高级查询技巧(两次JOIN同一个表,自包含JOIN,不等JOIN)
查看>>
难搞的EXCHANGE重新安装错误
查看>>
认识hasLayout
查看>>
MyISAM InnoDB 区别
查看>>
TibetanFont | ཡིག་གཟུགས། | 藏文字体
查看>>
mac系统下mysql5.7.13数据库编码查看和设置
查看>>
cocurrent包 原子性数据类型
查看>>
[vijos1049] 送给圣诞夜的礼品
查看>>
Codeforces 940F Machine Learning (带修改莫队)
查看>>
Jenkins Pipline语法
查看>>
Linux useradd -M -s
查看>>
define
查看>>
使用DD 创建SWAP
查看>>
【笔记篇】Ubuntu一日游
查看>>