`

Arc-03-29 CXF 实现 REST 方式上传文件

 
阅读更多

CXF 实现 REST 方式上传文件

 

/**
 * 
 */
package com.demo.rest;

import java.io.IOException;
import java.io.InputStream;
import java.util.Date;

import javax.activation.DataHandler;
import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.apache.cxf.jaxrs.ext.multipart.Attachment;
import org.apache.cxf.jaxrs.ext.multipart.ContentDisposition;
import org.apache.cxf.jaxrs.ext.multipart.MultipartBody;
import org.springframework.stereotype.Service;

/**
 * @author michael
 * 
 */
@Path("/image")
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
@Service
public class ImageServiceResource {
	private static final String UPLOAD_FILE_NAME ="filename";
	private static final String UPLOAD_FILE_TEMP ="tmp";


	@POST
	@Path("/upload/{task}")
	@Consumes({ "multipart/form-data" })
	public boolean attachImage(@PathParam("task") int task, MultipartBody body) {
		RestResult result = new RestResult();
		try {
			addAttachment(body.getRootAttachment(),task);
		} catch (IOException e) {
		} catch (Exception e) {
		}
		return true;

	}

	@POST
	@Path("/uploads/{task}")
	@Consumes({ "multipart/form-data" })
	public RestResult attachImages(@PathParam("task") int task, MultipartBody body) {
		RestResult result = new RestResult();
		for (Attachment attachment : body.getAllAttachments()) {
			try {
					addAttachment(attachment,task);
			} catch (IOException e) {
			} catch (Exception e) {
			}
		}
		return true;

	}

	public void addAttachment(Attachment attachment, int task) throws Exception {
		try {
			DataHandler dataHandler = attachment.getDataHandler();
			ContentDisposition cd =attachment.getContentDisposition();
			String path = "c:/temp/";
			String name = cd.getParameter(UPLOAD_FILE_NAME);
			if(name==null){
				name =UPLOAD_FILE_TEMP+(new Date()).getTime()+"."+"jpg";
			}
			UploadFileUtils.upload4Stream(name, path, dataHandler.getInputStream());
		} catch (IOException e) {
			throw e;
		} catch (Exception e) {
			throw e;
		}
	}
}
 
分享到:
评论
1 楼 zjc198805 2012-04-25  
lz,你好,请教你一个问题!UploadFileUtils这个类能发我一下么?644952013@qq.com

相关推荐

    SPRING-MVC-MQ-CXF-REST_Demo

    "SPRING-MVC-MQ-CXF-REST_Demo"这个项目很可能是用来演示如何在同一个应用中整合Spring MVC、MQ、CXF和REST技术。项目可能包含了以下部分: 1. Spring MVC配置:展示了如何设置DispatcherServlet、视图解析器以及...

    cxf.xml,cxf-servlet.xml,cxf-extension-soap.xml

    <import resource="classpath:META-INF/cxf/cxf.xml"/> <import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"/> <import resource="classpath:META-INF/cxf/cxf-servlet.xml"/>

    cxfWebservice客户端全部jar包及极简调用方法.rar

    cxf-core-3.0.0.jar,cxf-rt-bindings-soap-3.0.0.jar,cxf-rt-databinding-jaxb-3.0.0.jar,cxf-rt-frontend-jaxws-3.0.0.jar,cxf-rt-frontend-simple-3.0.0.jar,cxf-rt-transports-http-3.0.0.jar,cxf-rt-...

    apache-cxf-2.7.7以及cxf客户端所需要的jar包

    这个压缩包"apache-cxf-2.7.7以及cxf客户端所需要的jar包"包含了Apache CXF 2.7.7版本及其客户端运行所需的库文件。这些jar包对于创建、部署和消费Web服务至关重要,特别是对于使用命令行生成Web服务客户端的开发者...

    apache-cxf-3.5.0.zip

    - **JAX-WS**: CXF支持Java API for XML Web Services,允许开发者通过Java注解或XML描述来定义服务接口和服务实现,然后CXF会自动生成相应的WSDL文件。 - **JAX-RS**: 对于RESTful服务,CXF提供了JAX-RS实现,...

    apache-cxf-2.2.6.zip webservice cxf开发利器完整开发包

    Apache CXF 是一个开源的Java框架,用于构建和部署Web服务。这个"apache-cxf-2.2.6.zip"压缩包包含了CXF框架的2.2.6版本,是开发人员进行Web服务开发的重要工具。CXF允许开发者通过简单的API来创建、发布和消费Web...

    apache-cxf-3.1.6所有jar包

    在“apache-cxf-3.1.6所有jar包”中,lib目录下的jar文件涵盖了这些组件的实现。这些文件通常包括以下几类: - **CXF的核心库**:如cxf-api.jar、cxf-rt-core.jar等,提供了CXF的基础框架和核心功能。 - **JAX-WS和...

    cxf-core-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-core-3.0.1.jar; 赠送原API文档:cxf-core-3.0.1-javadoc.jar; 赠送源代码:cxf-core-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-core-3.0.1.pom; 包含翻译后的API文档:cxf-core-3.0.1-...

    apache-cxf-2.5.2

    1. **Web服务实现**:CXF允许开发者使用JAX-WS和JAX-RS标准来创建和部署Web服务。JAX-WS是用于构建SOAP服务的,而JAX-RS则用于构建RESTful服务。 2. **多种协议支持**:CXF支持多种通信协议,如HTTP、HTTPS、JMS等...

    apache-cxf-2.2.4

    - lib目录:包含CXF运行所需的jar文件,这些库文件覆盖了CXF的所有功能模块。 - samples目录:包含了一些示例项目,帮助开发者了解如何使用CXF来创建和使用Web服务。 - docs目录:包含了CXF的文档,如API参考、用户...

    cxf-rt-frontend-jaxrs-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-frontend-jaxrs-3.0.1.jar; 赠送原API文档:cxf-rt-frontend-jaxrs-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-frontend-jaxrs-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-frontend-jaxrs...

    cxf框架包 apache-cxf-3.4.3.tar.gz

    在本案例中,我们讨论的是"apache-cxf-3.4.3.tar.gz",这是Apache CXF 3.4.3版本的压缩包,通常包含了CXF框架的所有组件和必要的库文件。 **1. CXF框架介绍** Apache CXF是一个全面的服务开发框架,它的全称是...

    java cxf规范rest

    【标题】"java cxf规范rest"涉及到的是Java开发中使用Apache CXF框架实现RESTful服务的相关技术。CXF是一个开源的服务框架,它允许开发者创建和消费各种Web服务,包括基于JAX-WS和JAX-RS的标准。REST...

    cxf-rt-transports-http-3.0.1-API文档-中文版.zip

    赠送jar包:cxf-rt-transports-http-3.0.1.jar; 赠送原API文档:cxf-rt-transports-http-3.0.1-javadoc.jar; 赠送源代码:cxf-rt-transports-http-3.0.1-sources.jar; 赠送Maven依赖信息文件:cxf-rt-transports-...

    cxf3.1.18.rar

    spring 4.2.0 集成的cxf3.1.18的jar包,cxf-core-3.1.18.jar、cxf-rt-bindings-soap-3.1.18.jar、cxf-rt-databinding-jaxb-3.1.18.jar、cxf-rt-frontend-jaxws-3.1.18.jar、cxf-rt-frontend-simple-3.1.18.jar、cxf-...

    apache-cxf 2.2.8版本下载

    5. **RESTful服务**:除了SOAP,CXF也支持REST(Representational State Transfer)风格的服务,这是另一种轻量级的Web服务交互方式,强调资源的URI和HTTP方法。 在描述中提到的"webservice反向生成服务端.docx...

    cxf-2.7.18

    1. **服务实现与调用**:CXF提供了两种方式来实现Web服务,即JAX-WS(Java API for XML Web Services)和JAX-RS(Java API for RESTful Web Services)。开发者可以通过注解或者XML配置文件轻松地将Java类绑定到Web...

    cxf-rt-transports-http-jetty-3.0.2.zip

    1. **Web服务实现**:CXF提供了创建和部署SOAP和RESTful Web服务的工具和支持。开发者可以使用Java编程模型或者WSDL第一的方法来构建服务。 2. **客户端支持**:CXF不仅用于服务端,还允许开发者创建和使用Web服务...

    apache-cxf-2.7.18-src.zip 源码

    4. **协议栈**:CXF提供了多种协议栈,如SOAP、REST、MTOM(Message Transmission Optimization Mechanism)和SWA(Simple Web Attachment),支持不同类型的Web服务交互。 5. **绑定框架**:CXF的绑定框架允许将...

    apache-cxf-2.7.7.zip

    4. **WS-*规范支持**:CXF实现了诸如WS-Security、WS-Addressing、WS-ReliableMessaging等一系列WS-*规范,增强了Web服务的安全性和可靠性。 5. **插件架构**:CXF的插件架构允许开发者轻松地扩展其功能,比如添加...

Global site tag (gtag.js) - Google Analytics