Podio API - Java - 将文件附加到现有项目
Podio API - Java - Attaching files to existing items
我一直在上下搜索有关此的任何信息,但到目前为止我还没有找到任何有用的信息。我对跑道 API 比较陌生,我正在尝试 upload/attach 我在程序中创建的文件到特定应用程序中的特定项目。我已成功将文件上传到 API 并将其添加到特定项目的文件列表中,但它不会 'stick'/update 具有任何永久性。在方法结束时,我可以调用 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 的本地版本?如果是这种情况,那么我如何用我自己的 userItem 更新 podio 的版本?如果我完全找错了树,我哪里出错了?我一直在寻找更新项目的方法,但它们似乎只用于更新 fields/field 值。
提前致谢!
对项目的任何更新都会为您创建一个版本,因此您不必创建。您可以使用以下方法获取版本或恢复版本 link。
https://developers.podio.com/doc/items
如果您的问题是关于项目文件的处理,请相应说明,以便我们更好地帮助您。
不幸的是,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 必须从以下方法导出
让我知道它有帮助。
我一直在上下搜索有关此的任何信息,但到目前为止我还没有找到任何有用的信息。我对跑道 API 比较陌生,我正在尝试 upload/attach 我在程序中创建的文件到特定应用程序中的特定项目。我已成功将文件上传到 API 并将其添加到特定项目的文件列表中,但它不会 'stick'/update 具有任何永久性。在方法结束时,我可以调用 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 的本地版本?如果是这种情况,那么我如何用我自己的 userItem 更新 podio 的版本?如果我完全找错了树,我哪里出错了?我一直在寻找更新项目的方法,但它们似乎只用于更新 fields/field 值。
提前致谢!
对项目的任何更新都会为您创建一个版本,因此您不必创建。您可以使用以下方法获取版本或恢复版本 link。
https://developers.podio.com/doc/items
如果您的问题是关于项目文件的处理,请相应说明,以便我们更好地帮助您。
不幸的是,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 必须从以下方法导出
让我知道它有帮助。