gpt4 book ai didi

xpages - xpages 中带有特殊字符的文件上传

转载 作者:行者123 更新时间:2023-12-04 04:55:21 26 4
gpt4 key购买 nike

在 Xpages Upload 控件中,我可以上传带有特殊字符的照片文件。但是在 View 中,一些特殊字符变成了下划线(例如 {#[ 到 _ ),有些则不是(例如空格,+)。当使用函数attachmentObject.getName() 时,我可以获得带有特殊字符的原始文件名。因此,当我取回那种文件时,我遇到了问题。对我有什么建议吗??谢谢。

最佳答案

问题来自散列 (#),因为这是 URL 中的一个非常特殊的字符。它不能很容易地转换成特殊的 URL 编码形式,因为它是 URL 方案的有效字符并且在那里具有特殊含义。使用 ExtLib @EncodeUrl 函数也不起作用,因为这个函数会在散列前面切断您的字符串(我认为这是一个错误),导致资源请求在您的服务器上不存在,从而导致 404。

为了最终解决这个问题,我使用了我在 2009 年写的一个旧函数( http://blog.gollmick.de/mgoblog.nsf/dx/some-more-Functions-for-XPages-URLEncode-URLDecode.htm ) - 并且它可以根据您的需要在此处完成工作:

  • 获取附件名称
  • 正确编码附件名称
  • 计算相对于数据库的资源路径并添加编码的附件名称

  • 假设您的数据源名为 document1并且您在名为 body 的项目中有附件并且您将使用该项目的第一个附件,您需要以下代码来正确计算附件的路径:
    function @URLEncode(encodeObject, encSch:String) {
    try {
    var encScheme = ((encSch) && (encSch !== null))?encSch:"UTF-8";
    return java.net.URLEncoder.encode(encodeObject.toString(),
    encScheme);
    } catch (e) {
    print("ERROR in @URLEncode:" + e);
    }
    return null;
    }

    try {
    var list:java.util.List = document1.getAttachmentList("Body"),
    neo:NotesEmbeddedObject,
    size = list.size(),
    path = "";
    if (0 < size) {
    neo = list.get(0);
    path = "0/" + document1.getDocument().getUniversalID() + "/$file/" + @URLEncode(neo.getName());
    }
    return path;
    } catch (e) {
    print(e.toString());
    }

    您当然需要根据需要修改此代码,但这应该为您计算正确的 Web 路径提供正确的提示。我现在还没有在 XPinC 中测试过那个,所以这里计算的路径可能仍然不同。

    关于xpages - xpages 中带有特殊字符的文件上传,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16827074/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com