我使用RESTful API将文件上传到Alfresco Share。通过使用noderef我可以上传文件。有没有办法按文件夹名称上传文件?
在我们的应用程序中,我有一个名为Testing under testing的文件夹。我有一个名为test 1,test 2等的子文件夹。只要用户使用Alfresco REST API注册应用程序,就会在Alfresco中生成test1和test2。但是每次查找noderef和nodeid并不是一件好事。您能否提供任何可行的解决方案,其中包含用于按路径上传和下载文件的示例代码。
答案 0 :(得分:7)
您需要的参数可在Alfresco上传脚本中找到。
POST /alfresco/service/api/upload
destination
(将在其中创建节点的文件夹NodeRef)updateNodeRef
(将更新的现有节点的NodeRef)siteid
和containerid
(网站名称和该网站中将创建文档的容器)uploaddirectory
- 将上载文档的文件夹的名称(在站点容器或目标中)。此文件夹必须已存在在这种情况下,您要使用siteid
,containerid
和uploaddirectory
。所以说我有一个名为test
的网站,其中包含一个名为test1
的文件夹,我将siteid
设置为test
,containerid
设置为documentLibrary
,{ {1}}到uploaddirectory
。 test1
应该能够处理您的子目录。
以下是curl的示例:
uploaddirectory
答案 1 :(得分:1)
您只需使用开箱即用的网页脚本即可从存储库上传和下载文件。
Webscript上传内容 - http://host:port/alfresco/service/cmissamples/upload
Webscript获取内容 - http://host:port/alfresco/service/cmissamples/download
了解有关网络脚本的更多信息 - https://wiki.alfresco.com/wiki/Web_Scripts
希望这有帮助。
答案 2 :(得分:0)
MultipartFile multipartFile = docData.getBasicDetailsData()。getUploadFile(); 文件file11 = convert(multipartFile);
HttpPost post = new HttpPost("http://localhost:9090/alfresco/s/cmissamples/upload");
HttpHost targetHost = new HttpHost("localhost", 9090, "http");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials("admin", "admin"));
AuthCache authCache = new BasicAuthCache();
authCache.put(targetHost, new BasicScheme());
final HttpClientContext context = HttpClientContext.create();
context.setCredentialsProvider(credsProvider);
context.setAuthCache(authCache);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
builder.addBinaryBody("file", file11, ContentType.APPLICATION_OCTET_STREAM, "file.ext");
builder.addTextBody("name",multipartFile.getOriginalFilename());
builder.addTextBody("path","/CAMUNDA");
HttpEntity multipart = builder.build();
post.setEntity(multipart);
HttpClient httpClient = HttpClientBuilder.create().build();
HttpResponse response = httpClient.execute(post,context);
logger.info("response.toString(): "+response.toString());