2015-10-08 33 views
1

我正在上传文档并成功存储在谷歌驱动器上。现在我只想获取文件的缩略图以在下载链接处显示。请告诉我我是怎么做的?这是我用于上传文件的控制器代码。如何在我的项目中显示缩略图图像时,我在谷歌驱动器上存储图像

'`@RequestMapping(value = "/upload", method = RequestMethod.POST) 
public ModelAndView uploadFile(@RequestParam(value = "ddid", required = true) Integer ddid, 
     @RequestParam(value = "catageryId", required = true) Integer catageryId, 
     @RequestParam(value = "document", required = true) GMultipartFile document[], HttpServletRequest request, HttpServletResponse resp) { 

    DdeDriveDocuments ddeDriveDocuments = new DdeDriveDocuments(); 
    if (ServletFileUpload.isMultipartContent(request) && document != null) { 
     for (GMultipartFile gdocument : document) { 
      try { 
       boolean user = true; 
       List<DdeDriveDocuments> dds = ddeDriveDocumentsService.fatchData(ddid, catageryId); 
       for (DdeDriveDocuments file : dds) { 
        System.out.println(file.getDocument_name()); 
        if (file.getDocument_name().equals(gdocument.getOriginalFilename())) { 
         user = false; 
        } 
       } 

       if (user == true) { 
        ddeDriveDocuments 
          .setDocument_name((gdocument.getName() != null ? gdocument.getOriginalFilename() : "")); 
        System.out.println(gdocument.getOriginalFilename()); 
        ddeDriveDocuments.setDocument_created(new Date()); 
        ddeDriveDocuments.setCatagery_id(catageryId); 
        ddeDriveDocuments.setDd_id(ddid); 
        ddeDriveDocuments.setDd_uuid(GeneralUtil.getUUID()); 

        Lawyer googleAuthToken = lawyerService 
          .getAuthorisedUserToken(Configurator.getInstance().getDriveAccountEmail()); 
        if (googleAuthToken != null) { 
         // upload file in drive 
         if (ServletFileUpload.isMultipartContent(request) && document != null) { 

          // It's value either we need to get from form. 
          String description = "Testing"; 

          File file = DriveService.uploadDocumentToDrive(googleAuthToken, gdocument, 
            ddeDriveDocuments.getDocument_name(), description); 



           File thumFile = DriveService.getFileById(googleAuthToken, file.getId()); 

           System.out.println("thab url"+thumFile.getThumbnail()); 

          System.out.println(file.getThumbnailLink()); 



          if (file != null) { 
           ddeDriveDocuments.setDocument_drive_id(file.getId()); 
           ddeDriveDocuments.setThumburl(thumFile.getThumbnailLink()); 
           ddeDriveDocuments = ddeDriveDocumentsService.create(ddeDriveDocuments); 
          } 
         } 
        } else { 
         System.out.println("Autorised token not available for configured drive account."); 
        } 

       } 

       else { 
        System.out.println("wroung Input"); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    return new ModelAndView("redirect:/al/lawyer/ddfiles/" + ddid + "/" + catageryId); 
}`' 

回答

1

您必须使用Drive REST API方法Files: get。该方法的结果包含缩略图链接,但根据documentation它是一个到文件缩略图的短暂链接。通常持续几个小时。“

或者,如果你只是想显示一些漂亮的东西,你可以得到文件的内容类型或扩展名,并显示该类型所有文件的通用缩略图。我建议这样做,因为根据我的经验,驱动器api不是响应速度快的apis之一。

另外或另外,您可以/应该将缩略图缓存在应用程序中,减少驱动器api请求的数量,从而提高页面性能。

+0

好的,你可以建议我如何缓存缩略图在我的应用程序。或者你可以给我提供任何我使用gmultipart文件的例子。 –

+0

我上面已经上传了一些代码。 –

+0

@AbhishekSharma上面的代码适用于上传,这是第一步。现在您需要获取上传文件的信息。有一个如何在这里执行的示例:https://developers.google.com/drive/v2/reference/files/get。缓存最简单的方法是简单地下载缩略图并将其保存为“fileid_thumb”somwhere,并在下一个请求时检查在实际请求缩略图之前是否存在此文件。 – konqi

相关问题