微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

客户端代码:

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐