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 ...
随机推荐
- libvirt 基于C API基本使用案例
玩开源分享,需要有干到底的精神,今晚随便逛逛技术论坛突发有感;Ruiy不足之处,需跟进了; 最近变的较懒了,干活有点没劲,也不怪干来干去收获不大,缺少鼓励! 现在玩的技术大多是上不了台面了,想过没,你 ...
- javascript 数组 排除null, undefined, 和不存在的元素
The most common way to loop through the elements of an array is with a for loop: var o = [1,2,3,4,5] ...
- Unity3D基础学习 NGUI Example 7-Scroll View(Panel)制作固定包裹栏,点击传递参数显示物体
最终效果如下: 实现ScrollView主要是NGUI的三个脚本"UIDraggable Panel","UIGrid","UIDrag Panel ...
- ApiDemos-->Views-lists-slow adapter学习
今天来依照apidemos提供的方法来实现slow loading的效果. 简单说下实现方法: 实现ListView.OnScrollListener ,监听到手势滑动的情况,当处于滚动状态时,将新显 ...
- 使用CCUserDefault 推断用户是否是第一次登陆系统及UserDefault全路径的获取
bool bfirst =CCUserDefault::sharedUserDefault()->getBoolForKey("first"); //假设不能获取该键值,创建 ...
- OKHttp源码解析
http://frodoking.github.io/2015/03/12/android-okhttp/ Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 A ...
- hdu 5124
bc上的题目,很水,有很多方法做吧,题意大概就是给定你票数,然后让你求出票数最多的那个下标...... 之前我用两个for循环分开写,一个是读入,然后是判断,提交就wa,后来网上看了别人的,就是不能分 ...
- 基于脚本的动画的计时控制(“requestAnimationFrame”)(转)
requestAnimationFrame 方法的支持,该方法通过在系统准备好绘制动画帧时调用该帧,从而为创建动画网页提供了一种更平滑更高效的方法.在此 API 之前,使用 setTimeout 和 ...
- timestamp 正常日期转换成时间戳格式
select cast(sysdate as timestamp) "DATE" from dual select to_timestamp(to_date(sysdate, 'y ...
- 工作中部署使用MP平台的一些问题
1.首先先把项目导入到myeclipse中,如果没有.classpath和.mymetadata和.project等文件,就自己创建一个web项目,然后把里面的src覆盖,webroot等文件覆盖. ...