webservice文件上传下载(byte[] 实现方式)

测试环境:axis2-1.6.1、6.0.20、jdk1.5

说明:本方式仅适用于文件小于10M的场景(否则会出现内存溢出),大文件的上传下载应另选其他方式。

1、创建要发布成webservice的java类。

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class BlobService {

    /*
     * 文件上传服务
     */
    public boolean uploadFile(String fileName,byte[] bytes)
    {
        FileOutputStream fos = null;
        try{
            fos = new FileOutputStream("F:\\"+fileName);

            //将字节数组bytes中的数据,写入文件输出流fos中
            fos.write(bytes);
            fos.flush();
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }finally{
            try {
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return true;
    }
    /*
     * 文件下载服务
     */
    public byte[] downloadFile()
    {
        String filepath = "F:\\head.jpg";
        FileInputStream in = null;
        byte bytes[] = null;
        try {
            in = new FileInputStream(filepath);
            bytes = new byte[in.available()];

            //从输入流in中,将 bytes.length 个字节的数据读入字节数组bytes中
            in.read(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                in.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return bytes;
    }
}

2、将上面的java类编译后的class文件放到axis2\WEB-INF\pojo目录下。

3、编写客户端程序。

package client;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Date;
import javax.xml.namespace.QName;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.rpc.client.RPCServiceClient;

public class BlobRPCClient
{
    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";
        FileInputStream fis = new FileInputStream(filePath);

        // 创建保存要上传的图像文件内容的字节数组
        byte[] buffer = new byte[fis.available()];

        //将输入流fis中的数据读入字节数组buffer中
        fis.read(buffer);  

        //设置入参(1、文件名,2、文件字节流数组)
        Object[] opAddEntryArgs = new Object[]{"我是上传的文件.jpg", buffer};

        //返回值类型
        Class<?>[] classes = new Class<?>[]{ Boolean.class };

        //指定要调用的方法名及WSDL文件的命名空间
        QName opAddEntry = new QName("http://ws.apache.org/axis2","uploadFile");

        //关闭流
        fis.close();

        //执行文件上传
        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");

        System.out.println(new Date()+" 文件下载开始");
        byte bytes[] = (byte[]) serviceClient.invokeBlocking(opAddEntry, new Object[]{}, new Class[]{byte[].class})[0];
        FileOutputStream fileOutPutStream = new FileOutputStream("F:\\我是下载的文件.jpg");

        //将字节数组bytes中的数据,全部写入输出流fileOutPutStream中
        fileOutPutStream.write(bytes);
        fileOutPutStream.flush();
        fileOutPutStream.close();
        System.out.println(new Date()+" 文件下载完成");
    }
}

文章来源:http://huangqiqing123.iteye.com/blog/1454819

时间: 2024-11-03 10:11:41

webservice文件上传下载(byte[] 实现方式)的相关文章

webservice文件上传下载

使用DataHandler实现webservice的文件上传下载 服务端代码: package com.hello.weChat.controller; import javax.activation.DataHandler; import javax.activation.FileDataSource; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io

WebService实现文件上传下载

一:服务端:一个普通java web工程 package com.wzh.file; import com.sun.xml.ws.developer.StreamingAttachment; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOExceptio

java web 文件上传下载

文件上传下载案例: 首先是此案例工程的目录结构: 处理上传: FileUploadServlet.java 1 package fnz.fileUploadTest; 2 3 import java.io.File; 4 import java.io.IOException; 5 import java.io.InputStream; 6 import java.io.PrintWriter; 7 import java.text.SimpleDateFormat; 8 import java.

文件上传下载—servlet API实现

servlet API实现文件上传下载需要的jar包: UploadServlet.java package com.ymw.web.servlet; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.UUID; import javax.servl

SpringMVC文件上传下载

在Spring MVC的基础框架搭建起来后,我们测试了spring mvc中的返回值类型,如果你还没有搭建好springmvc的架构请参考博文->http://www.cnblogs.com/qixiaoyizhan/p/5819392.html 今天我们来讲讲spring mvc中的文件上传和下载的几种方法. 首先附上文件目录->我们需要配置的我做了记号-> 一.文件上传 首先为了方便后续的操作,以及精简代码,我们在Utils包下封装一个文件上传下载的帮助类: Files_Helper

javaEE(10)_文件上传下载

一.文件上传概述 1.实现web开发中的文件上传功能,需完成如下二步操作: •在web页面中添加上传输入项•在servlet中读取上传文件的数据,并保存到本地硬盘中. 2.如何在web页面中添加上传输入项?    <input type=“file”>标签用于在web页面中添加文件上传输入项,设置文件上传输入项时须注意:•必须要设置input输入项的name属性,否则浏览器将不会发送上传文件的数据.•必须把form的enctype属值设为multipart/form-data.设置该值后,浏览

28、java文件上传下载、邮件收发

文件上传下载 前台: 1. 提交方式:post 2. 表单中有文件上传的表单项: <input type="file" /> 3. 指定表单类型: 默认类型:enctype="application/x-www-form-urlencoded" 文件上传类型:multipart/form-data FileUpload 文件上传功能开发中比较常用,apache也提供了文件上传组件! FileUpload组件: 1. 下载源码 2. 项目中引入jar文件

文件上传表单 上传文件的细节 文件上传下载和数据库结合

1 文件上传表单   1)上传文件的本质是文本复制的过程   2)技术层面,在Java中一定会用到IO操作,主要以二进制方式读写   3)传统方式下,对于上传文件字段不同的浏览器有着不同的解析方式,例如:     IE6:upfile=c:\aa\bb\a.JPG     非IE6: upfile=a.JPG   4)可以将form以MIME协议的方式将上传文件传递到服务端,服务端以二进制流的方式读写     代码:客户端form enctype="multipart/form-data&quo

【SSH2(实践篇)】--Struts2文件上传下载实例

上篇文章又一次回顾了Struts2的运行机制,对它的运行步骤做了一步步的解析,这个解析不但再一次理清了Struts2的使用方法,而且对它的映射机制进行了深入的解析,并在最后通过一个实例来介绍了Struts2的一种使用方法,这里将做一个有关文件上传下载的实例. 一.文件上传 Struts2并没有提供文件上传的组件,所以想要实现上传的功能就必须通过第三方组件来实现,在Struts2引用的jar中包含了文件上传的组件,它是通过commons-fileupload.jar和commons-io.jar来