一:服务端:一个普通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.IOException;
import java.io.OutputStream;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlMimeType;
import javax.xml.ws.soap.MTOM; /**
* @author y
* @version V1.0
* @desc 文件上传下载服务
*/
@StreamingAttachment(parseEagerly = true, memoryThreshold = 40000L)
@MTOM
@WebService(name = "MtomStreaming",
serviceName = "MtomStreamingService",
targetNamespace = "http://wzh.com",
wsdlLocation = "StreamingImplService.wsdl")
public class FileManager { /**
* 文件上传
* @param fileName
* @param data
* @return
*/
@WebMethod
public String fileUpload(String fileName,
@XmlMimeType("application/octet-stream") DataHandler data){
String result; File file = new File(fileName); try {
OutputStream os = new BufferedOutputStream(new FileOutputStream(file)); data.writeTo(os); os.close(); result = "1";
} catch (FileNotFoundException ex) {
result = "0";
Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
result = "0";
Logger.getLogger(FileManager.class.getName()).log(Level.SEVERE, null, ex);
} return result;
} /**
* 文件下载
* @param filename
* @return
*/
@XmlMimeType("application/octet-stream")
@WebMethod
public DataHandler fileDownload(String filename) {
return new DataHandler(new FileDataSource(filename));
}
}

二:客户端:通过NetBeans建立Web服务客户端,根据Web服务端生成的wsdl进行创建,将服务端wsdl文件保存到本地,通过本地文件方式创建:

本地测试:

(1)新建InputStreamDataSource类继承DataSource

package test;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.activation.DataSource; public class InputStreamDataSource implements DataSource {
private final InputStream inputStream; public InputStreamDataSource(InputStream inputStream) {
this.inputStream = inputStream;
} @Override
public InputStream getInputStream() throws IOException {
return inputStream;
} @Override
public OutputStream getOutputStream() throws IOException {
throw new UnsupportedOperationException("Not implemented");
} @Override
public String getContentType() {
return "*/*";
} @Override
public String getName() {
return "InputStreamDataSource";
}
}

(2)Test.java

package test;

import com.wzh.MtomStreaming;
import com.wzh.MtomStreamingService;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.activation.DataHandler; public class Test { /**
* @param args the command line arguments
*/
public static void main(String[] args) {
downloadFile();
} public static void uploadFile(){
MtomStreamingService service = new MtomStreamingService();
MtomStreaming port = service.getMtomStreamingPort(); InputStream is; try {
is = new FileInputStream("/home/y/my_temp/tt.doc"); DataHandler upf = new DataHandler(new InputStreamDataSource(is));
String result = port.fileUpload("/home/y/my_temp2/tt.doc", upf); System.out.println("==========upload result:"+result);
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} public static void downloadFile(){
MtomStreamingService service = new MtomStreamingService();
MtomStreaming port = service.getMtomStreamingPort(); DataHandler dhn = port.fileDownload("/home/y/my_temp/22.doc");
try {
File tempFile = new File("/home/y/my_temp/w01.doc"); OutputStream output = new BufferedOutputStream(new FileOutputStream(tempFile));
dhn.writeTo(output); output.close(); System.out.println("====download");
} catch (IOException e1) {
e1.printStackTrace();
}
} }

WebService实现文件上传下载的更多相关文章

  1. iOS开发之结合asp.net webservice实现文件上传下载

    iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下使用asp.net webservice实现文件上传下载. 首先,让我们看下文件下载. 这里我们下载cnblogs上的一个zip文件.使用N ...

  2. WebService完成文件上传下载

    由于开发需要使用webservice,第一个接触的工具叫axis2.项目开发相关jar下载. service端: 启动类: import java.net.InetAddress; import ja ...

  3. webservice文件上传下载

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

  4. Struts的文件上传下载

    Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...

  5. Android okHttp网络请求之文件上传下载

    前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...

  6. Selenium2学习-039-WebUI自动化实战实例-文件上传下载

    通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...

  7. 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)

    1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...

  8. 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)

    艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...

  9. ssh框架文件上传下载

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

随机推荐

  1. python:unittest(测试框架)

    一,基本概念 TestCase:所有测试用例的基类 TestLoad:加载测试用例,返回TestSuite(测试套件) TestSuite:创建测试套件 TextTestRunner:运行测试用例 T ...

  2. HDU1863 畅通project 【最小生成树Prim】

    畅通project Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  3. Bottle 中文文档

    译者: smallfish (smallfish.xy@gmail.com) 更新日期: 2009-09-25 原文地址: http://bottle.paws.de/page/docs (已失效) ...

  4. VC++中操作XMLWin32实例

    摘要:VC++中操作XML XML在Win32程序方面应该没有在Web方面应用得多,很多Win32程序也只是用XML来存存配置信息而已,而且没有足够的好处的话还不如用ini.VC++里操作XML有两个 ...

  5. php递归json类实例代码

    这篇文章主要介绍了php递归json类的实现方法,可以实现对索引数组及数字数组的解析,进而实现递归数组返回json字符串的功能.具体实现代码如下: <?php /* * @ anthor:QD ...

  6. Js 正则表达式知识测试

    本文对javascript中正则表达式进行了总结汇总,将知识点和注意点都理了一下,并附上2个练习题,供大家参考学习. 正则表达式: 1.什么是RegExp?RegExp是正则表达式的缩写.RegExp ...

  7. 配置NTP时间服务器

    一.安装ntp软件 1.检查是否安装了ntp相关包. rpm -qa | grep ntp 2.安装ntp软件. yum -y install ntp 二.参数讲解 ignore  :关闭所有的 NT ...

  8. 使用Xmanager工具连接Linux服务器

    测试环境:RHEL5.8 1.# vi /usr/share/gdm/defaults.conf --修改以下三项Enable=true DisplaysPerHost=10 Port=177 All ...

  9. Linux crontab命令

    --常用参数:crontab -l               //查看当前用户下的cron任务crontab -e               //编辑当前用户的定时任务crontab -u  jo ...

  10. JY01-KX-01

    复习: 1.a标签跳转 <p id="地址"></p> <a href="#地址"></a> 预习: 1.out ...