加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

利用resteasy框架构建rest webservice----第六波:实现文件下载

发布时间:2020-12-16 23:27:04 所属栏目:安全 来源:网络整理
导读:客户端代码: 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.In

客户端代码:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读