【问题标题】:Podio API - Java - Attaching files to existing itemsPodio API - Java - 将文件附加到现有项目
【发布时间】:2016-08-04 16:10:20
【问题描述】:

我一直在搜索有关这方面的任何信息,但到目前为止我还没有找到任何有用的信息。我对 podio API 比较陌生,我正在尝试将我在程序中创建的文件上传/附加到特定应用程序中的特定项目。我已成功将文件上传到 API,并将其添加到特定项目的文件列表中,但它不会“粘贴”/更新以具有任何永久性。在方法结束时,我可以调用 getFiles() 并且文件将在那里,但是该文件在 podio 上不可见,如果我在其他任何时候调用 getFiles() 它将不存在。这是我的代码:

public static void uploadTimeSheet(File timeSheet){
    FileAPI fileApi = apiFactory.getAPI(FileAPI.class);
    int fileId = fileApi.uploadFile(timeSheet.getName(), timeSheet);
    com.podio.file.File timeSheetUploaded = fileApi.getFile(fileId);
    List<com.podio.file.File> files = new ArrayList<com.podio.file.File>();
    files = userItem.getFiles();
    files.add(timeSheetUploaded);
    userItem.setFiles(files);
}

userItem 是我要将文件上传到的特定项目。我绝不是经验丰富的编码员,但在我看来,通过调用 setFiles(files) 我只更新了项目 userItem 的本地版本?如果是这种情况,那么我怎样才能用我自己的方式更新 podio 的 userItem 版本?如果我完全叫错了树,我哪里出错了?我一直在寻找更新项目的方法,但它们似乎只用于更新字段/字段值。

提前致谢!

【问题讨论】:

    标签: java podio


    【解决方案1】:

    很遗憾,Java SDK 中不提供附加文件方法。您可以使用其他 SDK,例如 ruby​​

     # Attach a file to an existing reference
        # @see https://developers.podio.com/doc/files/attach-file-22518
        def attach(id, ref_type, ref_id)
          Podio.connection.post do |req|
            req.url "/file/#{id}/attach"
            req.body = {:ref_type => ref_type, :ref_id => ref_id}
          end
        end
    

    如果你真的想在 JAVA SDK 中工作,我会更新 JAVA SDK 对应的方法,或者有一个解决方法,你可以使用 updateItem 将文件更新为现有项目。

    public void updateItemFieldValues(int itemId, int fieldId,
                List<Map<String, Object>> values, boolean silent, boolean hook) {
            getResourceFactory()
                    .getApiResource("/item/" + itemId + "/value/" + fieldId)
                    .queryParam("silent", silent ? "1" : "0")
                    .queryParam("hook", hook ? "1" : "0")
                    .entity(values, MediaType.APPLICATION_JSON_TYPE).put();
        }
    }  
    

    上面的文件ID必须来自下面的方法

    告诉我这有帮助。

    【讨论】:

    • 我今天一直在努力工作,我认为我已经完成了工作,所以谢谢你!不幸的是,将文件附加到现有项目是一个已经很大的项目的一个小而重要的部分,因此它必须是 Java。如果可以在 Java API 中添加 attachFile 方法,那就太棒了,但看起来我的程序不需要运行。只是一个问题,因为使用解决方法附加的文件不是“官方”附加的,它们的 ID 只是被存储,是否有某种时间或数量限制需要注意,或者确定它们不会从系统?
    【解决方案2】:

    对项目的任何更新都会为您创建一个版本,因此您不必创建。您可以使用以下链接的方法获取版本或恢复到版本。

    https://developers.podio.com/doc/items

    您的问题是关于处理物品的文件吗,请相应地指定它们,以便我们更好地帮助您。

    【讨论】:

    • 感谢您的回复。你能澄清你的意思吗?使用 developers.podio.com/doc/items(和 java api 文档)我已成功将文件上传到 API(developers.podio.com/doc/files/upload-file-1004361),将该文件添加到附加到我要附加该项目的项目的文件列表中,并设置这个新的更新列表作为项目的文件。这最后两个我使用 API 中的 Java 文档完成,因为 Java API 似乎缺少诸如 developers.podio.com/doc/files/attach-file-22518 之类的方法。这是正确的做法吗?
    • 只是为了澄清使用上述将文件附加到现有项目的方法并没有给我带来成功。正如我认为您在回复中所说,我已经创建了该项目的本地版本,其中包含我希望它包含的文件。然后我的问题是如何使该本地版本成为 podio 上的版本,以便将该项目永久上传到给定项目,并且可以在 podio 上手动找到。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2010-10-27
    • 2016-10-23
    • 2010-12-10
    相关资源
    最近更新 更多