通过将multipart文件转换为java.io.File来上载

时间:2014-10-21 11:59:34

标签: grails file-upload picasa

目前,我所做的只是:

  • 获取所有文件:

    def itemPhotos = request.getMultiFileMap().item
    
  • 将其转移到服务器的tmp文件夹:

    for(itemPhoto in itemPhotos) {
        if(itemPhoto.getOriginalFilename().length() == 0)
            continue
        String path = grailsAttributes.getApplicationContext()
                .getResource("/../tmp").getFile().toString() + File.separatorChar + itemPhoto.getOriginalFilename()
        itemPhoto.transferTo(new File(path))
        itemImages.add(new File(path))
    }
    
  • 并将其上传到Picasa网络相册:

    if(!itemImages.isEmpty()) {
        def photoLinks = photoService.uploadImages(itemImages, itemInstance.id)
    }
    
  • 使用后删除它们:

    for(itemImage in itemImages)
        itemImage.delete()
    

因为,Picasa只能上传java.io.File的文件。我必须先将文件传输到本地磁盘然后上传。我知道在使用多部分文件上传时,已经创建了一个临时文件,但为了简单起见,我将其转移。

由于我要上传这个应用程序,并且他们一次会上传大量内容,如何让这个过程耗费更少的时间,并且还可以减轻转移的负担。删除文件?

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

扩展或替换picasa service,以便它可以将请求中的文件(作为流)直接传送到目标。我认为使用HttpBuilder的相对简单的实现会做