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;
		}
	}
}
 

你可能感兴趣的:(REST)