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;
		}
	}
}
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值