当前位置: 首页 > 面试题库 >

Alfresco更新文件-错误开机自检

吕向阳
2023-03-14
问题内容

我正在尝试更新Alfresco中的文件…,然后执行以下代码:

var csrf_header = Alfresco.util.CSRFPolicy.getHeader();
var csrf_token = Alfresco.util.CSRFPolicy.getToken();
function getResponse(pdfbase64) {
                var fd = new FormData();
                if (Alfresco.util.CSRFPolicy && Alfresco.util.CSRFPolicy.isFilterEnabled())
                {
                    fd.append(csrf_header, csrf_token);
                }
                fd.append("username", "admin");
                fd.append("updatenoderef", nodeRef);
                fd.append("filedata", pdfbase64);
                fd.append("majorversion", "true");
                fd.append("overwrite", "true");
                alert(fileUpdateURL);
                $.ajax({
                  url: fileUpdateURL,
                  type: "POST",
                  data: fd,
                  processData: false,  // tell jQuery not to process the data
                  contentType: false   // tell jQuery not to set contentType
                });

}

变量pdfbase64是把该文件(的变化,我对文件进行更新以base64文件)的内容,但也许这是不正确的格式?nodeRef是的文件,如参考:"workspace://SpacesStore/4fb1b7e7-2502-4011-8870-17e8d626b93b"fileUpdateURLURLPOSThttp://localhost:8080/share/proxy/alfresco/api/upload

参数来源

我得到了错误:

POST http:// localhost:8080 / share / proxy / alfresco / api /
upload
500内部服务器错误

javax.servlet.ServletException:比较会话和请求参数中的令牌时,注意到可能的CSRF攻击。要求:在org.alfresco.web.site.servlet.CSRFFilter
$ AssertTokenAction.run(CSRFFilter.java:845)上的POST / share / proxy /
alfresco / api / upload在org.alfresco.web.site.servlet.CSRFFilter.doFilter
(CSRFFilter.java:312)在org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.alfresco。
web.site.servlet.SSOAuthenticationFilter.doFilter(SSOAuthenticationFilter.java:447)

在org.apfc.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)在org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)在org.alfresco.web.site.servlet.MTAuthenticationFilter
org上的org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)的.doFilter(MTAuthenticationFilter.java:74)org上的org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)的apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase。
java:504),网址为org.apache.catalina.core.StandardHostValve。在org.apache处org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)处调用(StandardHostValve.java:170)在org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)处org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421)上的.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)在org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java)
:1074),位于org.apache.tomcat.util.net.AprEndpoint $
SocketProcessor.doRun(AprEndpoint.java:2466),位于org.apache.tomcat.util.net.AprEndpoint
$
SocketProcessor.doRun(AprEndpoint.java:2466),位于org.apache.coyote.AbstractProtocol
$ AbstractConnectionHandler.process(AbstractProtocol.java:611)。
tomcat.util.net.AprEndpoint $
SocketProcessor.run(AprEndpoint.java:2455)在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)位于org.apache.tomcat.util.threads.TaskThread
$
WrappingRunnable.run(TaskThread.java:61)位于java.util.concurrent.ThreadPoolExecutor
$ Worker.run(ThreadPoolExecutor.java:617) .run(Thread.java:745)

编辑:如果我使用

http:// localhost:8080 / alfresco / service / api /
upload

代替

http:// localhost:8080 / share / proxy / alfresco / api /
upload

我得到错误:

{
    "status" : 
  {
    "code" : 400,
    "name" : "Bad Request",
    "description" : "Request sent by the client was syntactically incorrect."
  },

  "message" : "Required parameters are missing",  
  "exception" : "",

  "callstack" : 
  [

  ],

  "server" : "Community v5.0.0 (d r99759-b2) schema 8,022",
  "time" : "Jan 24, 2016 1:14:41 PM"
}

谁能帮我?

编辑2:

我尝试使用以下命令通过http:// localhost:8080 / share / proxy / alfresco / api /
upload发出请求:

function getResponse(pdfbase64) {
            var csrf_header = Alfresco.util.CSRFPolicy.getHeader();
            var csrf_token = Alfresco.util.CSRFPolicy.getToken();
            var fd = new FormData();
            if (Alfresco.util.CSRFPolicy && Alfresco.util.CSRFPolicy.isFilterEnabled())
            {
                fd.append(csrf_header, csrf_token);
                fileUpdateURL += "?" + Alfresco.util.CSRFPolicy.getParameter() + "=" + encodeURIComponent(Alfresco.util.CSRFPolicy.getToken());

            }
            fd.append("username", "admin");
            fd.append("updatenoderef", nodeRef);
            fd.append("filedata", pdfbase64);
            fd.append("majorversion", "true");
            fd.append("overwrite", "true");
            alert(fileUpdateURL);
            $.ajax({
                url: fileUpdateURL,
                type: "POST",
                data: fd,
                processData: false,  // tell jQuery not to process the data
                contentType: false   // tell jQuery not to set contentType
            });

    }

但是我得到了错误:

{
        "status" : 
      {
        "code" : 400,
        "name" : "Bad Request",
        "description" : "Request sent by the client was syntactically incorrect."
      },

      "message" : "Required parameters are missing",  
      "exception" : "",

      "callstack" : 
      [

      ],

      "server" : "Community v5.0.0 (d r99759-b2) schema 8,022",
      "time" : "Jan 24, 2016 1:14:41 PM"
    }

问题答案:

尝试在函数中移动这些行:

var csrf_header = Alfresco.util.CSRFPolicy.getHeader();
var csrf_token = Alfresco.util.CSRFPolicy.getToken();

如果这不能解决您的问题,并且问题不是csrf_*vars
的可变范围问题,则应从此处尝试使用提示(2)

更新: 正如我在聊天中解释的那样,您应该替换:

fd.append("filedata", pdfbase64);

与:

fd.append("filedata", new Blob([pdfbase64], {type: 'application/pdf'}););


 类似资料:
  • 如何创建自定义用户配置文件?我想在Alfresco中为用户添加一个新字段...我尝试使用这个:http://ecmarchitect.com/archives/2012/02/27/1555,代码:http://ecmarchitect.com/images/articles/alfresco-people/someco-people.zip... 重要代码: SignUserFactory.ja

  • 我正在尝试在Laravel中复制个人资料页。这一切都很好,但当我点击“保存”以保存配置文件中的更改时,它显示的就像我一样 没有争论。此消息Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException无消息。 由于某些原因,我无法从文件中导入代码,没有代码的人能帮忙吗?

  • 之前不了解,关于文件自动更新,原来也是可以根据需要设置不同更新模式的。 说个最实际的例子: 之前用写python脚本,在windows的cmd中输入脚本去执行,执行过程中,会生成一个log文件:xxx.log, 另外每次执行不同的命令,对应的log文件内容也会变化, 而该log文件以及对应的python脚本xxx.py文件,我都是用Notepad++打开的, 所以,执行完cmd中的python脚本

  • 我需要从发布请求中获取ID。这是我的HTTP请求和标头管理器。 查看结果侦听器输出-采样器结果和请求响应数据为: { : "status":400,:" success":false,:" message ":"缺少请求正文!"} 我尝试使用blazemeter chrome插件,对于同样的请求,他们正在使用正文数据并解析其中的整个表单数据。有人能帮我吗? 授权持有人问题截图: BeanShell

  • 问题内容: 我正在学习如何在Python中打开文件,但是当我键入要打开的文件的路径时,会弹出一个窗口,说“(unicode错误)’unicodeescape编解码器无法解码位置2-3的字节:被截断的\ UXXXXXXXX转义”。它突出显示了我的第一个括号。这是代码: 问题答案: 一个明显的问题是您使用的是普通字符串,而不是原始字符串。在 会被解释为制表符,而不是文字反斜杠,其后是。 使用以下之一:

  • 是否有某种方法我可以使用OpenCMIS API来异步更新文档内容。