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 ...
随机推荐
- King's Quest - poj 1904(强连通分量+外挂输入输出)
题意:国王有N个儿子,每个儿子都有很多喜欢的姑娘,官员为每个王子都找了一个姑娘让他们结婚,不过国王不满意,他想知道他的每个儿子都可以和那个姑娘结婚(前提他的儿子必须喜欢那个姑娘) 分析:因为最下面一行 ...
- [置顶] JSP中使用taglib出错终极解决办法
jsp中 <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c ...
- CapsLock indicator on Ubuntu for Thinkpad
http://askubuntu.com/questions/292535/how-to-get-caps-num-scroll-lock-keys-osd-notification sudo add ...
- xshell中启动linux图形界面
使用root用户执行xhost + IP为客户端机器IP,使用远程登录用户执行 DISPLAY=IP:0.0;export DISPLAY; 使用远程登录的用户执行: xhost +
- ulimit开启coredump时核心转储
[root@localhost ~]# ulimit -c [root@localhost ~]# ulimit -a core data seg size (kbytes, -d) unlimite ...
- 再探java基础——零碎基础知识整理
1.java是解释型语言.java虚拟机能实现一次编译多次运行. 2.JDK(java software Development kit 软件开发包),JRE(java Runtime Environ ...
- PowerDesigner 生成带凝视SQL 各个版本号通用10(12、15)
做数据库是设计时最苦恼的事就是用PowerDesigner工具设计完数据库运行SQL文件后没有凝视.那么怎么才干让PowerDesigner设计完有凝视呢,下边教你一个笨的方法,方法尽管笨,可是能实现 ...
- nginx 站点80跳443配置
server { listen 80; server_name www.furhacker.cn; location /{# return 301; rewrite ^(.*)$ https://$h ...
- HTTP头信息解读
本文为多篇“HTTP请求头相关文章”及<HTTP权威指南>一书的阅读后个人汇总整理版,以便于理解. 通常HTTP消息包括客户机向服务器的请求消息和服务器向客户机的响应消息.客户端向服务器发 ...
- WinAPI——谐振动的合成
#include<Windows.h> #include<math.h> #define NUM 1000 #define PI 3.14159 LRESULT CALLBAC ...