`

webservices传输文件

 
阅读更多

 

@XmlRootElement(name = "Customer")
@XmlAccessorType(XmlAccessType.FIELD)
public class Customer implements Serializable {
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;
    private String name;
    @XmlMimeType("application/octet-stream")
    private DataHandler myData; 
    
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public DataHandler getMyData() {
		return myData;
	}
	public void setMyPData(DataHandler myData) {
		this.myData = myData;
	}
    
}

 

@javax.xml.ws.soap.MTOM
@WebService(name = "MTOMServerService", portName = "MTOMServer")
public class MTOMServer {
	static Logger logger = LogManager.getLogger(MTOMServer.class.getName());
	private static final int BUFFER_SIZE = 1024*1024*100;
	
	/**
	 * 删除
	 * @param path 文件夹路径
	 * @throws FileNotFoundException
	 */
	@WebResult
	@XmlMimeType("*/*")
	public void delete(@WebParam(name = "path") String path) throws FileNotFoundException {
		
		if (path == null || path.isEmpty()){
			logger.error(path+"文件路径为空!");
			throw new FileNotFoundException("文件路径为空!");
		}
		File downloadFile = new File(path);
		
		if (!downloadFile.exists()){
			logger.error(path+"不存在!");			
			throw new FileNotFoundException(path + "不存在!");
		}
		logger.debug("删除:"+path);
		
		(new PowerDelete()).delete(path);
	}

	/**
	 * 下载文件
	 * @param path 文件夹路径
	 * @throws FileNotFoundException
	 * @return DataHandler 数据句柄
	 */
	@WebResult
	@XmlMimeType("*/*")
	public Customer download(@WebParam(name = "path") String path) throws FileNotFoundException {
		
		if (path == null || path.isEmpty()){
			logger.error(path+"文件路径为空!");			
			throw new FileNotFoundException("文件路径为空!");
		}

		final File downloadFile = new File(path);
		
		if (!downloadFile.exists()){
			logger.error(path+"不存在!");			
			throw new FileNotFoundException(path + "不存在!");
		}

		if (!downloadFile.isFile()){
			logger.error(path+"不是一个标准文件!");			
			throw new FileNotFoundException(path + "不是一个标准文件!");
		}
		
		logger.debug("下载文件:"+path);
		
		DataHandler dataHandler = new DataHandler(new FileDataSource(downloadFile));
		
		Customer customer = new Customer();
		
		customer.setName(downloadFile.getName());
		customer.setMyPData(dataHandler);
		
		return customer;
	}

	/**
	 * 
	 * 下载全部文件
	 * @param path 文件夹路径
	 * @throws FileNotFoundException
	 * @return DataHandler[] 数据句柄
	 */
	@WebResult
	@XmlMimeType("*/*")
	public Customer[] downloadMulti(@WebParam(name = "path") String path) throws FileNotFoundException {
		
		if (path == null || path.length() <= 0) {
			logger.error(path+"文件路径为空!");	
			throw new FileNotFoundException("文件夹路径为空!");
		}
		
		File file = new File(path);
		if (!file.exists()){
			logger.error(path+"不存在!");
			throw new FileNotFoundException(path + "不存在!");
		}
		if (file.isFile()){
			logger.error(path+"是一个标准文件,请更换下载方法!");	
			throw new FileNotFoundException(path + "是一个标准文件,请更换下载方法!");
		}
		
		logger.debug("下载文件夹:"+path);
		
		final File[] files = file.listFiles();
		Customer[] handlers = new Customer[files.length];

		for (int i = 0, j = files.length; i < j; i++) {
			final String fileName = files[i].getName();
			Customer customer = new Customer();
			DataHandler dataHandler = new DataHandler(new FileDataSource(files[i]));
			customer.setName(fileName);
			customer.setMyPData(dataHandler);
			handlers[i] = customer;
		}
		
		return handlers;
	}
	
	/**
	 * 上载
	 * 
	 * @param fileName 待上载的文件名
	 * @param dataHandler 数据句柄
	 * @throws IOException IO异常
	 */
	public String upload(@WebParam(name = "fileName") String fileName, @XmlMimeType("*/*") @WebParam(name = "dataHandler") DataHandler dataHandler){
		logger.debug("上传文件:"+fileName);
		
		File depository = ConfigManager.getFileDepository();
		String urlString = depository.getAbsolutePath() + File.separatorChar + fileName;
		InputStream in = null;
		OutputStream out = null;
		try {
			if (fileName == null || fileName.isEmpty()){
				logger.error("文件名为空!");
				throw new FileNotFoundException("文件名为空!");
			}
			
			in = dataHandler.getInputStream();
			out = new FileOutputStream(urlString);
			
			byte[] buf = new byte[BUFFER_SIZE];
			int read;
			while ((read = in.read(buf)) != -1) {
				out.write(buf, 0, read);
				out.flush();
			}
		} catch (IOException e) {
			logger.error(e.getMessage());
			e.printStackTrace();
		} finally {
			try {
				in.close();
				out.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		
		return urlString;
	}
}

 

		// 下载全部文件
		try {
			List<Customer> dataHandlers = mtomPort.downloadMulti("W:\\TEST\\20140117-144703-4DCD");

			byte[] buf = new byte[CHUNK_SIZE];
			for (int i = 0, j = dataHandlers.size(); i < j; i++) {
				Customer handler = dataHandlers.get(i);
				String fileName = handler.getName();
				fileName = fileName == null || fileName.isEmpty() ? Integer.toString(i) : fileName;
				InputStream in = handler.getMyData().getInputStream();
				OutputStream out = new FileOutputStream("G:\\"+fileName);

				int read;
				while ((read = in.read(buf)) != -1) {
					out.write(buf, 0, read);
					out.flush();
				}
				in.close();
				out.close();
			}
		} catch (FileNotFoundException_Exception e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

 

 

分享到:
评论

相关推荐

    Webservices 实现文件上传

    1. **Web服务(Webservices)**:Web服务是通过统一描述、发现和集成(UDDI)注册,使用简单对象访问协议(SOAP)消息传输,依赖于WSDL(Web服务描述语言)进行接口定义的一种服务。这种服务可以通过HTTP协议调用,...

    java web services教程

    3. **WSDL (Web Services Description Language)**:WSDL 是一个 XML 文件,它定义了 Web Service 的接口,包括服务的位置(URL)、可用的操作、输入和输出参数等。WSDL 通过 HTTP 发布,供客户端程序发现和理解服务...

    webServices 用法 。net

    Web Services是通过HTTP协议传输数据的服务,它使用标准的XML(可扩展标记语言)来封装数据,使得服务可以被任何能够解析XML的系统调用。这种技术让分布式应用程序能够跨越不同的操作系统和编程语言进行通信。 在...

    webservices相关jar包.rar

    1. `webservices-api.jar`: 这个jar包包含了JAX-WS(Java API for XML Web Services)的核心API,它是Java平台上的标准Web服务规范。JAX-WS提供了创建、部署和消费Web服务的全面支持。它定义了诸如`javax.xml.ws`...

    Web Services资料大全

    而“Web Services资料”这个文件可能包含了关于Web服务的广泛知识,包括基本概念、设计模式、最佳实践以及相关的技术文档和教程。 总的来说,Web服务是一种强大的工具,它促进了系统的互操作性和可重用性。通过掌握...

    Oracle Web Services Manager_ Securing your Web Services

    根据给定文件的标题与描述“Oracle Web Services Manager: Securing your Web Services”,我们可以深入探讨OWSM如何帮助企业保护其Web服务,以及相关的知识点。 ### Oracle Web Services Manager简介 Oracle Web ...

    Web Services 教程

    - **SOAP (Simple Object Access Protocol)**:用于在 Web Services 中传输数据的标准协议。 - **WSDL (Web Services Description Language)**:用于描述 Web Services 的 XML 文件。 - **UDDI (Universal ...

    调用天气预报Web Services实例.rar

    SOAP(Simple Object Access Protocol)是Web Services中最常用的通信协议,它定义了消息结构和传输方式。 在这个实例中,我们可能会使用到SOAP请求来获取天气预报信息。SOAP消息通常包含三个主要部分:Envelope、...

    西北工业大学软件工程WebServices实验报告

    **西北工业大学软件工程WebServices实验报告** Web Services是一种基于互联网的、平台独立的软件接口,它允许不同系统之间进行通信和交互。这个实验报告详细涵盖了Web Services的核心概念、技术栈以及在软件工程中...

    webservices示例代码

    Web服务(Web Services)是一种基于互联网的、使用标准XML(Extensible Markup Language)进行通信的软件,它允许不同系统间的应用程序进行交互。本示例代码是关于如何创建和使用Web服务的一个简明教程,旨在帮助...

    Java Web Services教程

    Java Web Services教程主要涵盖的是如何使用Java技术来创建和使用Web服务。Web服务是一种通过互联网进行通信的标准协议,允许不同的应用程序之间交换数据。基于Java的Web服务利用一系列开放标准,如SOAP(简单对象...

    JAVA访问WebServices接口的简单实例,android可用

    在IT行业中,WebServices是一种基于网络的、平台独立的交互方式,它允许不同的应用程序之间进行数据交换。在Java和Android开发中,访问WebServices接口是常见的需求,用于获取服务器端的数据或者实现远程调用功能。...

    web services

    Web Services 主要基于 XML 和 SOAP 协议进行数据传输。这种技术非常适合于构建分布式应用和服务导向架构(SOA),能够实现不同应用程序之间的交互。 #### 二、Java 中配置 Web Services 的步骤 根据描述和部分...

    c#通过https方式WebServices例子

    首先,我们需要理解“Java端写的https webservices”。在Java中,可以使用JAX-WS或JAX-RS等标准来创建Web Services。这些服务可以通过HTTPS协议对外提供,从而允许远程客户端通过安全连接进行调用。在Java端,设置...

    php实现webservices接口

    Web Services是一种基于网络的、分布式的模块化组件,它提供了一种标准的方法,使得运行在不同系统上的应用程序可以互相通信。PHP作为一种流行的服务器端脚本语言,广泛应用于Web开发,因此,用PHP实现Web Services...

    The Java™ Web Services Tutorial

    ### Java™ Web Services 教程知识点详解 #### 一、教程概述 《Java™ Web Services 教程》是一本指导开发者使用 Java Web Services Developer Pack(Java WSDP)开发 Web 应用程序的专业指南。该教程由 Sun ...

    CORBA For Webservices

    ### CORBA For WebServices #### 一、CORBA在Web Services中的应用背景 CORBA(Common Object Request Broker Architecture,通用对象请求代理系统)是OMG(Object Management Group)组织为解决分布式计算环境下...

    应用Web Services构建多层架构的高效.NET应用

    Web Services基于SOAP(Simple Object Access Protocol)协议,它使用XML格式来封装数据,并通过HTTP协议进行传输,这使得Web Services可以穿透防火墙,实现互联网上的通信。WSDL(Web Services Description ...

    Microsoft.Exchange.WebServices

    在实际开发中,通常会使用`Microsoft.Exchange.WebServices`库,这是一个.NET Framework的类库,包含在`Microsoft.Exchange.WebServices.dll`文件中。这个库简化了与EWS的交互,提供了易于使用的.NET对象模型。开发...

    WebServices开发文档[收集].pdf

    它通过使用XML(可扩展标记语言)作为数据格式,SOAP(简单对象访问协议)作为消息传输协议,WSDL(Web服务描述语言)描述服务接口,以及UDDI(统一描述、发现和集成)作为服务注册和查找机制,构建了一个跨平台、跨...

Global site tag (gtag.js) - Google Analytics