2011-05-05 127 views
0

我有一个在java中实现的RESTful服务来上传文件。这里是代码:REST风格的Web服务GET文件

@POST 
@Produces("text/plain") 
public String uploadFile(@Context HttpServletRequest request) { 

    String resultStatus = "fileupload error"; 
    String fileRepository = "/MobilityPatterns/"; 

    if (ServletFileUpload.isMultipartContent(request)) { 
     FileItemFactory factory = new DiskFileItemFactory(); 
     ServletFileUpload upload = new ServletFileUpload(factory); 
     upload.setSizeMax(1073741824); //Limits the max file size (bytes) 
     List<FileItem> items = null; 
     try { 
      items = upload.parseRequest(request); 
     } catch (FileUploadException e) { 
      e.printStackTrace(); 
     } 

     String username = null; 
     for(FileItem item : items){ 
      if(item.isFormField() && item.getFieldName().equalsIgnoreCase("username")){ 
       username = item.getString(); 
      } else if (!item.isFormField() && item.getSize() > 0) { 
       try { 
        String filename = item.getName(); 

        String dateFormat = "yyyyMMdd_HHmmss"; 
        Calendar cal = Calendar.getInstance(); 
        SimpleDateFormat dateFormatter = new SimpleDateFormat(dateFormat); 
        String date = dateFormatter.format(cal.getTime()); 

        item.write(new File(fileRepository + username + "_" + date + "_" + filename)); 
        resultStatus = "fileupload success"; 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    } 
    return resultStatus; 
} 

但现在我想实现一个服务来下载此文件。我可以在如何做到这一点上有一些帮助吗?

回答

0

也许这样的事情?我从来没有使用jax-rs,所以我不知道我的代码是否会计算!

@GET 
@Produces("application/x-octet-stream") 
public void downloadFile(@Context HttpServletRequest request,@Context HttpServletResponse response) { 
    //fetch the file id from request object 
    //get File using file id 
    //dump file contents to response 
}