客户端代码:
package resteasy.server;
import java.io.DataOutputStream;
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 java.net.URLEncoder;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.GET; ?
import javax.ws.rs.PUT;
import javax.ws.rs.Path; ?
import javax.ws.rs.PathParam; ?
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Component;
@Path(value = "echo") ?
public class Echo { ?
? @GET ?
? @Path(value = "/{message}") ?
? public String echoService(@PathParam("message") String message) ?
? { ?
????? return message; ?
? } ?
?
?? ?@PUT
?? ?@Path(value = "/{folder}/{fileName}")
?? ?public Response uploadFile(@PathParam("folder") String folder,@PathParam("fileName") String fileName,
?? ??? ??? ?@Context HttpServletRequest request)
?? ?{
?? ??? ?File f = new File("c:"+fileName);
?? ??? ?InputStream is = null;
?? ??? ?try {
?? ??? ??? ?is = request.getInputStream();
?? ??? ??? ?OutputStream os = new FileOutputStream(f);
?? ??? ??? ?byte[] buffer = new byte[8192];
?? ??? ??? ?int bytesRead = 0;
?? ??? ??? ?while ((bytesRead = is.read(buffer,8192)) != -1) {
?? ??? ??? ??? ?os.write(buffer,bytesRead);
?? ??? ??? ?}
?? ??? ??? ?//FileUtils.copyInputStreamToFile(is,f);
?? ??? ?} catch (IOException e) {
?? ??? ??? ?// TODO Auto-generated catch block
?? ??? ??? ?e.printStackTrace();
?? ??? ?}
?? ??? ?return Response.ok().build();
?? ?}
?? ?
?? ?/**
?? ? * 下载对象
?? ? * @param bucketName
?? ? * @param objectName
?? ? * @param request
?? ? * @return
?? ? * @throws FileNotFoundException
?? ? */
?? ?@Path(value = "/{bucketName}/{objectName}")
?? ?@GET
?? ?@Produces(MediaType.APPLICATION_OCTET_STREAM)
?? ?public Response downloadObject(@PathParam(value = "bucketName") String bucketName,@PathParam(value = "objectName") String objectName,@Context HttpServletRequest request) throws FileNotFoundException
?? ?{
?? ?//?? ?BucketObject bucketObject = objectManager.downloadObject(request.getHeader(CommonConstant.USER_TOKEN),CommonsUtil.generateSummary(request),bucketName,objectName);
?? ??? ?String fielname="C:"+bucketName+""+objectName;
?? ??? ?//直接返回输出流
?? ??? ?File localFile = new File(fielname);
?? ??? ?FileInputStream fileInputStream = new FileInputStream(localFile);
?? ??? ?//return Response.ok(new BigFileOutputStream(bucketObject.getDataStream())).build();
?? ??? ?return Response.ok(new BigFileOutputStream(fileInputStream)).build();
?? ?} ?
}
服务器端代码:
??? @Path(value = "/{bucketName}/{objectName}")
?? ?@GET
?? ?@Produces(MediaType.APPLICATION_OCTET_STREAM)
?? ?public Response downloadObject(@PathParam(value = "bucketName") String bucketName,objectName);
?? ??? ?String fielname="C:"+bucketName+""+objectName;
?? ??? ?//直接返回输出流
?? ??? ?File localFile = new File(fielname);
?? ??? ?FileInputStream fileInputStream = new FileInputStream(localFile);
?? ??? ?//return Response.ok(new BigFileOutputStream(bucketObject.getDataStream())).build();
?? ??? ?return Response.ok(new BigFileOutputStream(fileInputStream)).build();
?? ?}?
小结:服务器端负责构建文件的输入流,客户端负责构建到新文件的输出流
参考:http://blog.csdn.net/caizhh2009/article/details/7221206