如何插入一个文件到谷歌驱动器路径与Apache Camel Java DSL

qeeaahzv  于 2023-02-22  发布在  Apache
关注(0)|答案(1)|浏览(124)

我一直在尝试找出如何使用Apache Camel的google-drive drive-files组件将一些文件插入到驱动器中的嵌套文件夹中。到目前为止,下面的代码能够将文件插入到驱动器的根文件夹中。

from("timer:bkp?period={{timer.period}}")
            .process(new BackupFile())
            .to("google-drive://drive-files/insert")
            .log("done");

这是Processor类

public class BackupFile implements Processor {
private static final String TEST_UPLOAD_FILE = "/path/to/file/imge.jpg";

private static final java.io.File UPLOAD_FILE = new java.io.File(TEST_UPLOAD_FILE);

@Override
public void process(Exchange exchange) throws Exception {
    
    File fileMetadata = new File();
    fileMetadata.setTitle(UPLOAD_FILE.getName());
    FileContent mediaContent = new FileContent(null, UPLOAD_FILE);
    final Map<String, Object> headers = new HashMap<>();
    
    headers.put("CamelGoogleDrive.content", fileMetadata);
    headers.put("CamelGoogleDrive.mediaContent", mediaContent);
    exchange.getIn().setHeaders(headers);

}

}
FYI我需要在插入之前定义嵌套路径,即做一些设置,如

setPath("/mydrive/path/tofile");

任何帮助或线索将不胜感激。

uqdfh47h

uqdfh47h1#

在四处寻找之后,我发现了Node.js示例,它很有帮助。沿着缺少的信息是,嵌套文件夹需要存在,然后我们才能引用它。我期待的是创建文件夹的功能,但也许这可以作为改进添加进来。文件夹的ID(PARENT_ID)也可以从文件夹的URL中找到。
下面的代码终于为我工作。

ParentReference parRef=new ParentReference();
    parRef.setId(PARENT_ID);
    List<ParentReference> parents=new ArrayList<>();
    parents.add(parRef);

    File fileMetadata = new File();
    fileMetadata.setTitle(UPLOAD_FILE.getName());
    fileMetadata.setParents(parents);

    FileContent mediaContent = new FileContent(null, UPLOAD_FILE);
    final Map<String, Object> headers = new HashMap<>();

    headers.put("CamelGoogleDrive.content", fileMetadata);
    headers.put("CamelGoogleDrive.mediaContent", mediaContent);
    exchange.getIn().setHeaders(headers);

相关问题