客户端代码:
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, 0, 8192)) != -1) {
os.write(buffer, 0, 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,@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();
}
小结:服务器端负责构建文件的输入流,客户端负责构建到新文件的输出流
参考:http://blog.csdn.net/caizhh2009/article/details/7221206