Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 更改文件内容-Alfresco_Javascript_Ajax_Post_Alfresco_Alfresco Share - Fatal编程技术网

Javascript 更改文件内容-Alfresco

Javascript 更改文件内容-Alfresco,javascript,ajax,post,alfresco,alfresco-share,Javascript,Ajax,Post,Alfresco,Alfresco Share,我有一个自定义文档库操作到Alfresco文件,当我按下此按钮时,会打开一个带有小程序(javascript)的新页面来更改文件,但我正在base64中进行修改,并在屏幕上“显示”以下内容: var stringPDF = "<object data=\"data:application/pdf;base64," + JSON.parse(pdfbase64).message + "\" type=\"application/pdf\"width=\"100%\" height=\"100

我有一个
自定义文档库操作
Alfresco
文件,当我按下此按钮时,会打开一个带有小程序(javascript)的新页面来更改文件,但我正在
base64
中进行修改,并在屏幕上“显示”以下内容:

var stringPDF = "<object data=\"data:application/pdf;base64," +
JSON.parse(pdfbase64).message + "\"
type=\"application/pdf\"width=\"100%\"
height=\"100%\"></object>";$("#pdfTexto").html(stringPDF);
var stringPDF=”“$("pdfTexto).html(pdf),;
但我真正需要的是更改文件,因为当存储库再次出现时,必须进行更改,而不仅仅是显示。如何通过更改将现有文件的内容更改为新内容

我使用此URL获取文件:

然后我转换成base64。。。我做了些改变

但是如果我想写一篇文章来改变内容,我该怎么做呢

提前感谢。

正如我在中提到的:

实现这一目标的最快和最简单的方法是利用

这也将确保与alfresco的新版本兼容

请注意,您需要以属性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 );
        }
而不是:

/alfresco/service/api/upload

你甚至不需要在你的请求中附加一张票证。

你需要按照这些步骤来实现你想要的

1)正在读取文件:

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

2)捕获新内容:

从小程序中从用户捕获新文件内容。我猜您正在将其存储在某个字符串变量中

3)编辑现有文件内容:

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

4)更改回回购: 从步骤3调用API:

你也可以看看这个插件,它可以满足你的需求


希望这有帮助。

您可以使用Javascript中的Rest api和Ajax将对文件的更改发布到Alfresco。@matthewp。一篇我也能得到的关于这个url的帖子?@matthewp。如果你能给我举个例子。如何更改内容?我可以用javascript进行更改?请查看我的第三条注释;-)我还有一个问题:我已经加载了applet,但是如何在不再次询问用户的情况下获取用户名和密码呢?因此,为每个用户定义不同用户名和密码的第一个便笺。还有一个问题,我在b64中的PDF上做了更改,但我在哪里根据请求进行了更改?要更新文件的内容吗?在我上面的代码中,pdfbase64是带有更改的pdf。我在你的代码中包含了这个吗?我对这一部分感到困惑。@PRVS:因为您正在处理共享,所以您很可能已通过身份验证。如果是这种情况,您可以通过share中的代理端点访问alfresco repo,所有请求在转发到您的repo之前都会附加身份验证票证!换句话说,使用此端点:/share/proxy/alfresco/api/upload而不是:/alfresco/service/api/upload,您甚至不必在请求中附加票证!但我不知道如何制作“3”。我有一个问题:
/alfresco/service/api/upload