更改文件内容 - Alfresco

时间:2016-01-21 15:22:03

标签: javascript ajax post alfresco alfresco-share

我有一个#if MyLibVersion != 1 #error You are including version 1 headers, please set MyLibVersion accordingly. #endif Custom Document Library Action个文件,当我按下此按钮时会打开一个带有小程序(javascript)的新页面来更改文件,但我正在执行此操作Alfresco和#34;中出现的修改"在屏幕上用这个:

base64

但我真的需要的是更改文件,因为当存储库再次出现时,必须进行更改,而不仅仅是显示。如何通过更改将现有文件的内容更改为新文件?

我使用此URL来生成文件的GET:

  

http://localhost:8080/share/proxy/alfresco/slingshot/node/content/workspace/SpacesStore/21384098-19dc-4d3f-bcc1-9fdc647c05dc/latexexemplo.pdf

然后我转换为base64 ......然后我做了更改......

但是,如果我想要发布POST以更改内容,我该怎么做呢?

提前致谢。

2 个答案:

答案 0 :(得分:3)

正如我在my response中提到this question

  

实现这一目标的最快且最简单方式是利用RESTfull API

     

这也将确保与新版露天的兼容性。

     

请注意,您需要在表单属性 updatenoderef 中为要更新的文档提供noderef,并且属性 majorversion 是一个布尔标志,用于指定是否为新版本是文档的次要/主要版本。

     

以下示例代码可以帮助您使用您的用例:

        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpPost uploadFile = new HttpPost(<alfresco-service-uri>+"/api/upload?alf_ticket="+<al-ticket>);

        MultipartEntityBuilder builder = MultipartEntityBuilder.create();
        builder.addTextBody("username", "<username>", ContentType.TEXT_PLAIN);
        builder.addTextBody("updatenoderef", <noderef>, ContentType.TEXT_PLAIN);
        builder.addTextBody("...", "...", ContentType.TEXT_PLAIN);
        builder.addBinaryBody("filedata", <InputStream>, ContentType.DEFAULT_BINARY, <filename>);
        HttpEntity multipart = builder.build();

        uploadFile.setEntity(multipart);

        CloseableHttpResponse response = httpClient.execute(uploadFile);

        String responseString = IOUtils.toString(response.getEntity().getContent(), "UTF-8"); 
        JSONObject responseJson = new JSONObject(responseString);
        if (response.getStatusLine().getStatusCode()!=200){
            throw new Exception("Couldn't upload file to the repository, webscript response :" + responseString );
        }
     

注1:您需要更换这些tockens&lt; *&gt;使用您自己的值/ vars

     

注2:如果您在检索故障单时遇到问题,请检查this linkthis one

注3:要在JavaScript而不是java中执行此操作,请访问this link并尝试使用js发布我按照指示推荐的参数!

注4:由于您正在进行共享,因此您很可能已通过身份验证。

如果是这种情况,您可以通过共享中的代理端点访问您的露天仓库,并且所有请求都会在转发到您的仓库之前附加身份验证凭证!

换句话说,请使用此端点:

/share/proxy/alfresco/api/upload

而不是:

/alfresco/service/api/upload

并且您甚至不必为您的请求附上票证。

答案 1 :(得分:1)

您需要按照以下步骤来实现您的目标。

1)阅读文件:

要显示已上传的PDF文件的内容,您需要阅读文件内容。您可以使用以下API调用成功完成此操作。

  

http://localhost:8080/share/proxy/alfresco/slingshot/node/content/workspace/SpacesStore/21384098-19dc-4d3f-bcc1-9fdc647c05dc/latexexemplo.pdf

2)捕获新内容:

从applet中捕获用户的新文件内容。我猜你将它存储在一些String变量中。

3)编辑现有文件内容:

这里的问题是你不能简单地使用任何开箱即用的RESTresco REST API编辑任何pdf文件(据我所知)。因此,您需要创建自己的RESTFul API,以编辑pdf文件的内容。您可以考虑使用某些第三方库来完成这项工作。您需要在RESTFul API中插入编辑pdf的逻辑

4)更改回Repo:   从第3步调用您的API:

您还可以查看可以满足您要求的插件。

https://addons.alfresco.com/addons/alfresco-pdf-toolkit

希望这有帮助。