`
hwei_344370758
  • 浏览: 21441 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Axis2上传下载文件--以byte形式

 
阅读更多
Axis2上传下载文件
Service:
package com.siven.axis2.service;

import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.FileOutputStream;
import javax.activation.DataHandler;

public class FileService
{
    // 使用byte[]类型参数上传二进制文件
    public boolean uploadWithByte(byte[] file, String filename)
    {
        FileOutputStream fos = null;
        try
        {
            fos = new FileOutputStream("c:/temp/"+filename);
            fos.write(file);
            fos.close();
        }
        catch (Exception e)
        {
            return false;
        }
        finally
        {
            if (fos != null)
            {
                try
                {
                    fos.close();
                }
                catch (Exception e)
                {
                }
            }
        }
        return true;
    }

    private void writeInputStreamToFile(InputStream is, OutputStream os) throws Exception
    {
        int n = 0;
        byte[] buffer = new byte[8192];
        while ((n = is.read(buffer)) > 0)
        {
            os.write(buffer, 0, n);
        }
    }

    // 使用DataHandler类型参数上传文件
    public boolean uploadWithDataHandler(DataHandler file, String filename)
    {
        System.out.println("======================  start");
        FileOutputStream fos = null;
        try
        {
            fos = new FileOutputStream("c:/temp/"+filename);
            // 可通过DataHandler类的getInputStream方法读取上传数据
            writeInputStreamToFile(file.getInputStream(), fos);
            fos.close();
        }
        catch (Exception e)
        {
            return false;
        }
        finally
        {
            if (fos != null)
            {
                try
                {
                    fos.close();
                }
                catch (Exception e)
                {
                }
            }
        }
        System.out.println("======================  end");
        return true;
    }
   
    public byte[] downWithByte(String fileName) throws Exception
    {
       // 打开图像文件,确定图像文件的大小
        String filePath = "c:/temp/"+fileName;
        File file = new File(filePath);
        java.io.FileInputStream fis = new java.io.FileInputStream(filePath);
        // 创建保存要上传的图像文件内容的字节数组
        byte[] buffer = new byte[(int) file.length()];
        // 将图像文件的内容读取buffer数组中
        int n = fis.read(buffer);  //n为读入的字节数
        System.out.println("文件长度:" + file.length());
        fis.close();
        return buffer;
    }
}

===================================================================================================


RPC Client:
    public static void invokeUploadWithByte() throws AxisFault
    {
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
        options.setTo(targetEPR);
        DataHandler dh = new DataHandler(new FileDataSource("c:/1.png"));//要上传的文件路径
        Object[] opAddEntryArgs = new Object[]{ dh,"a.png" };//上传到服务器的文件名
        Class[] classes = new Class[]{ Boolean.class };
        QName opAddEntry = new QName("http://service.axis2.siven.com","uploadWithByte");
        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);
    }
   
    public static void invokeUploadWithDataHandler() throws AxisFault
    {
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
        options.setTo(targetEPR);
        DataHandler dh = new DataHandler(new FileDataSource("c:/1.png"));//要上传的文件路径
        Object[] opAddEntryArgs = new Object[]{ dh,"fun.png" }; //上传到服务器的文件名
        Class[] classes = new Class[]{ Boolean.class };
        QName opAddEntry = new QName("http://service.axis2.siven.com","uploadWithDataHandler");
        System.out.println(serviceClient.invokeBlocking(opAddEntry, opAddEntryArgs,classes)[0]);
    }

    public static void invokeDownWithByte() throws AxisFault
    {
        RPCServiceClient serviceClient = new RPCServiceClient();
        Options options = serviceClient.getOptions();
        EndpointReference targetEPR = new EndpointReference("http://localhost:8888/Axis2/services/fileService");
        options.setTo(targetEPR);

        Object[] opAddEntryArgs = new Object[] {"a.png"};//要下载的文件名
        Class[] classes = new Class[] {byte[].class};
        QName opAddEntry = new QName("http://service.axis2.siven.com","downWithByte");
        byte[] strArray = (byte[])serviceClient.invokeBlocking(opAddEntry,opAddEntryArgs, classes)[0];
        FileOutputStream fos = null;
        try
        {
            //  将下载的图像保存在c:/temp/盘的down.png文件中
            fos = new FileOutputStream("c:/temp/down.png");
            //  开始写入图像文件的字节
            fos.write(strArray);
            fos.close();
        }catch(Exception e){
         e.printStackTrace();
        }
        System.out.println("OK");   
    }



Stub  Client:

    public static void fileServiceTest() throws RemoteException
    {
        FileServiceStub fss = new FileServiceStub();
        DataHandler dh = new DataHandler(new FileDataSource(new File("c:/1.png")));//要上传的文件路径
        FileServiceStub.UploadWithByte uwb = new FileServiceStub.UploadWithByte();
        uwb.setFile(dh);
        uwb.setFilename("ccc.png");//上传到服务器的文件名
        FileServiceStub.UploadWithByteResponse res =fss.uploadWithByte(uwb);
        System.out.println(res.get_return());
       
        FileServiceStub.UploadWithDataHandler uwh = new FileServiceStub.UploadWithDataHandler();
        uwh.setFile(dh);
        uwh.setFilename("ddd.png");//上传到服务器的文件名
        FileServiceStub.UploadWithDataHandlerResponse resh = fss.uploadWithDataHandler(uwh);
        System.out.println(resh.get_return());
    }
分享到:
评论

相关推荐

    axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_

    标题中的"axis2-idea-plugin-1.7.9.zip_axis2_axis2-idea-plugin_idea导入axis2_"提到了几个关键元素,分别是"axis2"、"idea-plugin"和"idea导入axis2",这暗示了这个压缩包是用于在IntelliJ IDEA这款集成开发环境...

    axis2-eclipse-codegen-plugin-1.6.2.zip和axis2-eclipse-service-plugin-1.6.2.zip

    标题中的"axis2-eclipse-codegen-plugin-1.6.2.zip"和"axis2-eclipse-service-plugin-1.6.2.zip"是两个与Apache Axis2相关的Eclipse插件,用于简化Web服务的开发过程。Apache Axis2是Java平台上一个成熟的Web服务...

    axis2c-bin-1.6.0 axis2c-src-1.6.0

    axis2c-bin-1.6.0-linux.tar.gz axis2c-bin-1.6.0-win32.zip axis2c-src-1.6.0.tar.gz axis2c-src-1.6.0.zip 加md5

    axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2

    标题中的"axis2-eclipse-codegen-plugin-1.6.2和axis2-eclipse-service-plugin-1.6.2"指的是两个与Apache Axis2相关的Eclipse插件:Axis2代码生成插件和Axis2服务插件,它们是版本1.6.2的。Apache Axis2是一个流行的...

    axis2-1.5.1-bin.zip axis2-1.5.1-war.zip axis2部署使用

    `axis2-1.5.1-war.zip`是Axis2作为Web应用的WAR(Web Archive)文件形式,适用于直接部署到支持Servlet容器(如Tomcat、Jetty)中。它包含了Axis2框架的全部功能,并且可以与其它Web应用共存。WAR文件的结构与标准的...

    axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard

    共四个文件,都是最先版的,希望可以帮助大家。axis2-eclipse-service-archiver-wizard和axis2-eclipse-codegen-wizard和axis2-1.6.1-bin和axis2-1.6.1-war

    axis2-1.8.0apache-cxf-3.4.4.rar

    标题中的"axis2-1.8.0apache-cxf-3.4.4.rar"是一个压缩包文件,其中包含了两个重要的开源项目:Apache Axis2版本1.8.0和Apache CXF版本3.4.4。这两个项目都是用于构建和部署Web服务的重要工具,主要应用于Java开发...

    axis2-idea-plugin-1.7.8

    "axis2-idea-plugin-1.7.8" 是一个专为IntelliJ IDEA设计的插件,主要用于提升开发者在处理Axis2 Web服务时的效率和便利性。Axis2是Apache软件基金会开发的一个开放源代码Web服务框架,它提供了一种高效、灵活的方式...

    axis2-1.6.2

    axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...

    axis2-eclipse-service与axis2-eclipse-codegen插件

    目前axis2最高版本是2.0以上的版本,但是eclipse和myeclipse都不支持,无奈只能使用低版本的插件1.6.3;经实验,可以安装成功; 安装方法:右键解压到当前文件夹,Copy解压的文件到eclipse安装目录dropins下,重启...

    axis2-std-1.0-bin.zip与axis2.war

    当你下载这个zip文件,你可以解压后在本地环境中搭建和运行Axis2服务。通过这个文件,开发者可以进行开发和测试Web服务,因为它提供了完整的Axis2框架以及运行时环境。此外,它还可能包含一些工具,如 wsdl2java 和 ...

    axis2相关的jar包

    axis2-java2wsdl-1.5.4.jar axis2-jaxbri-1.5.4.jar axis2-jaxws-1.5.4.jar axis2-jibx-1.5.4.jar axis2-json-1.5.4.jar axis2-kernel-1.5.4.jar axis2-metadata-1.5.4.jar axis2-mtompolicy-1.5.4.jar axis2-saaj-...

    axis2-1.6.2-war+axis2-1.6.1-war+axis2-1.6.2-bin

    2. axis2-1.6.1-war:这是Axis2的较早版本,同样以WAR文件形式提供。与1.6.2相比,可能存在功能差异、bug修复或性能优化等方面的不同。 3. axis2-1.6.2-bin:这是Axis2的二进制发行版,通常包含可执行文件、库文件...

    axis2-1.4.1-bin.zip axis2-1.4.1-war.zip

    3. **axis2-1.4.1-war.zip**:这个压缩包是一个WAR(Web Application Archive)文件,表示Axis2作为一个Web应用程序的形式。它可以被部署到任何支持Servlet 2.4或更高版本的Web服务器,如Tomcat、Jetty等。WAR文件...

    axis2相关jar包~eclipse支持插件包

    1、axis2相关jar包如下: axiom-api-1.2.10.jar axiom-dom-1.2.10.jar axiom-impl-1.2.10.jar axis2-adb-1.5.4.jar axis2-adb-codegen-1.5.4.jar axis2-codegen-1.5.4.jar axis2-corba-1.5.4.jar axis2-fastinfoset-...

    axis2-1.6.2.zip

    axis2-1.6.2.zip, windows axis2工具,根据 WSDL生成java文件。 1、axis2客户端下载地址:http://mirror.esocc.com/apache//axis/axis2/java/core/1.6.2/axis2-1.6.2-bin.zip; 2、下载解压在D:\Work_Program_...

    完整的axis2 jar包包含实例.zip

    axis2 webservice 服务端jar包: -->axis2-kernel-1.6.1.jar -->axis2-spring-1.6.1.jar -->axis2-transport-http-1.6.1.jar -->XmlSchema-1.4.7.jar -->wsdl4j-1.6.2.jar -->axiom-api-1.2.12.jar -->axiom...

    axis2.eclipse.codengen.plugin-SNAPSHOT-axis2-eclipse-codege-plugin.zip

    在Eclipse中,插件以插件目录的形式存在,包含了一系列的JAR文件和其他资源,这些文件共同构成了插件的功能模块。 综上所述,这个"axis2.eclipse.codengen.plugin-SNAPSHOT-axis2-eclipse-codegen-plugin.zip"包的...

    axis2-eclipse-service-archiver-wizard.zip

    axis2-eclipse-service-archiver-wizard.zip

    axis2-adb-1.4.1.jar

    axis2-adb-1.4.1.jar axis2-adb-1.4.1.jar

Global site tag (gtag.js) - Google Analytics