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