如何从Android上传到Alfresco?

时间:2012-08-04 16:59:40

标签: android rest upload alfresco

我想通过我的Android应用上传到Alfresco。我发现了这个api:

   The following web script uploads file content and metadata into the repository.
POST /alfresco/service/api/upload
The web script uses the following HTML form data:
filedata - (mandatory) HTML type file
siteid
containerid
uploaddirectory
updatenoderef
filename
description
contenttype
majorversion
overwrite
thumbnails
The returned content is:
nodeRef
It returns a status: STATUS_OK (200).
The web script description document specifies the following options:
Value   Description
user    The authentication access
required    The transaction level
any The format style
json    The default response format

但我不知道

  1. 我的文件路径在哪里?

  2. filedata - (mandatory) HTML type file:HTML类型文件的格式是什么,这是什么?

  3. 那么其他参数呢?

  4. 感谢您的阅读

2 个答案:

答案 0 :(得分:2)

首先,我假设您正在使用HTTP客户端库进行POST调用,并且该库能够以multipart/form-data格式编码POST主体,简称为“Multipart”。

filedata参数应包含正在上载的文件的内容和名称(在您的文件系统上)。这是多部分编码的优势,如果您只是将参数传递给文件并告诉它使用multipart/form-data格式,您的HTTP库应该知道如何对参数进行编码。

其他参数只是字符串值,因此应该更容易设置。这方面的文档并不是很好,但从参数名称中可以明显看出它们的作用。

您可以尝试使用Curl从本地计算机上运行上传过程,然后确定如何在您的应用中应用类似的过程,例如

curl -H "Content-type: application/json" --data '{ "username": "admin", "password": "admin" }' http://localhost:8080/alfresco/service/api/login

从输出中获取登录票证,然后将名为test.png的测试文件从本地文件系统上传到URL名称为willtest的站点,

curl -F 'filedata=@test.png' -F 'siteid=willtest' -F 'containerid=documentLibrary' http://localhost:8080/alfresco/service/api/upload?alf_ticket=TICKET_blah

然后最后退出

curl -X DELETE 'http://localhost:8080/alfresco/service/api/login/ticket/TICKET_blah?alf_ticket=blah'

最后但重要的一点:Android的完整移动SDK正在由Alfresco开发,将在今年晚些时候发布。如果您打算做一些比简单上传文件更复杂的事情,您可能希望在它可用时查看它。

答案 1 :(得分:0)

为了能够从Android应用程序上传文件并使用Multipart内容类型,我需要在我的应用程序中添加一些额外的jar文件。

apache-mime4j, httpclient, httpcore and httpmime

使用HttpPost发布参数