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.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实现文件上传下载的更多相关文章
- iOS开发之结合asp.net webservice实现文件上传下载
iOS开发中会经常用到文件上传下载的功能,这篇文件将介绍一下使用asp.net webservice实现文件上传下载. 首先,让我们看下文件下载. 这里我们下载cnblogs上的一个zip文件.使用N ...
- WebService完成文件上传下载
由于开发需要使用webservice,第一个接触的工具叫axis2.项目开发相关jar下载. service端: 启动类: import java.net.InetAddress; import ja ...
- webservice文件上传下载
使用DataHandler实现webservice的文件上传下载 服务端代码: package com.hello.weChat.controller; import javax.activation ...
- Struts的文件上传下载
Struts的文件上传下载 1.文件上传 Struts2的文件上传也是使用fileUpload的组件,这个组默认是集合在框架里面的.且是使用拦截器:<interceptor name=" ...
- Android okHttp网络请求之文件上传下载
前言: 前面介绍了基于okHttp的get.post基本使用(http://www.cnblogs.com/whoislcj/p/5526431.html),今天来实现一下基于okHttp的文件上传. ...
- Selenium2学习-039-WebUI自动化实战实例-文件上传下载
通常在 WebUI 自动化测试过程中必然会涉及到文件上传的自动化测试需求,而开发在进行相应的技术实现是不同的,粗略可划分为两类:input标签类(类型为file)和非input标签类(例如:div.a ...
- 艺萌文件上传下载及自动更新系统(基于networkComms开源TCP通信框架)
1.艺萌文件上传下载及自动更新系统,基于Winform技术,采用CS架构,开发工具为vs2010,.net2.0版本(可以很容易升级为3.5和4.0版本)开发语言c#. 本系统主要帮助客户学习基于TC ...
- 艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输)(一)
艺萌TCP文件上传下载及自动更新系统介绍(TCP文件传输) 该系统基于开源的networkComms通讯框架,此通讯框架以前是收费的,目前已经免费并开元,作者是英国的,开发时间5年多,框架很稳定. 项 ...
- ssh框架文件上传下载
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
随机推荐
- 关于SQL的Group By
SELECT col1, col2, col3, sum(col3) from T1 GROUP BY col1, col2, col3, col4 ; 对于含有Group By的Sql语句,需要注意 ...
- CapsLock indicator on Ubuntu for Thinkpad
http://askubuntu.com/questions/292535/how-to-get-caps-num-scroll-lock-keys-osd-notification sudo add ...
- ubunu设置java命令为全局的命令-添加到全局环境变量
sudo vim /etc/environment 在environment中后边添加代码: JAVA_HOME=/usr/local/jdk1.6.0_31 CLASSPATH=/usr/local ...
- Ubuntu runlevel修改
安装Unbuntu 12.04. 据说Ubunut的一个UI相对友好的Linux版本,但我的需求是仅仅将其作为服务器使用,偶尔用用UI界面.所以我希望启动Ubuntu时,直接进入Shell命令行. 印 ...
- nginx+keepalived实现nginx双主高可用的负载均衡
http://kling.blog.51cto.com/3320545/1253474 一.前言: 在互联网上面,网站为用户提供原始的内容访问,同时为用户提供交互操作.提供稳定可靠的服务,可以给用户带 ...
- Java基础知识强化88:BigDecimal类之BigDecimal类引入和概述 以及 BigDecimal的使用(加减乘除)
1. BigDecimal类概述: 由于在运算的时候,float类型和double很容易丢失精度.所以为了能够精确的表达.计算浮点数,Java提供了BigDecimal. BigDecimal:不可变 ...
- JAVA虚拟机与内存
资料整理自网络(侵删) JVM内存 组成 JAVA的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method) 栈区: 1.每个线程包含一个栈区,栈中只保存基础数据类型的对象和 ...
- yii cgridview 如何显示图片
发布的新闻或介绍里有图片,图片存的是Url地址,通过yii的cgridview,默认是数据库里存的啥就显示啥,如何把url地址转为图片?直接上代码 <?php $data = $model-&g ...
- nginx添加缓存
nginx的具体逻辑是什么样的? 分布式session spring session redis过滤器 有4种方案: 一直访问一台 //如果这台机器垮掉了,怎么办? session同步 序列化传输 / ...
- mongodb的tailCursor的设计思想
http://derickrethans.nl/mongodb-and-solr.html 这是mongodb的php客户端的写法