Alfresco通过REST上传

时间:2015-02-10 10:59:13

标签: rest upload alfresco

我使用RESTful API将文件上传到Alfresco Share。通过使用noderef我可以上传文件。有没有办法按文件夹名称上传文件?

在我们的应用程序中,我有一个名为Testing under testing的文件夹。我有一个名为test 1,test 2等的子文件夹。只要用户使用Alfresco REST API注册应用程序,就会在Alfresco中生成test1和test2。但是每次查找noderef和nodeid并不是一件好事。您能否提供任何可行的解决方案,其中包含用于按路径上传和下载文件的示例代码。

3 个答案:

答案 0 :(得分:7)

您需要的参数可在Alfresco上传脚本中找到。

POST /alfresco/service/api/upload
  • destination(将在其中创建节点的文件夹NodeRef)
  • updateNodeRef(将更新的现有节点的NodeRef)
  • siteidcontainerid(网站名称和该网站中将创建文档的容器)
  • uploaddirectory - 将上载文档的文件夹的名称(在站点容器或目标中)。此文件夹必须已存在

在这种情况下,您要使用siteidcontaineriduploaddirectory。所以说我有一个名为test的网站,其中包含一个名为test1的文件夹,我将siteid设置为testcontainerid设置为documentLibrary,{ {1}}到uploaddirectorytest1应该能够处理您的子目录。

以下是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());