0

我想通过我的 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 回答 2

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'

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

于 2012-08-09T08:24:11.957 回答
0

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

apache-mime4j, httpclient, httpcore and httpmime

并使用 HttpPost 发布参数

于 2012-08-05T13:58:43.897 回答