【问题标题】:file upload with special characters in xpagesxpages中带有特殊字符的文件上传
【发布时间】:2013-05-30 02:38:30
【问题描述】:

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

【问题讨论】:

  • attachmentObject.getHref()?
  • attachmentObject 是一个NotesEmbeddedObject
  • 您的意思是要下载刚刚上传的照片还是要在视图中显示照片?
  • 我想在 xpage 上显示那张照片。所以我使用 .getName() 来获取该图像文件。所以我得到了带有特殊字符的原始文件名。但在图像文件保存的视图中,特殊字符的_下划线实例。因此我遇到了错误。
  • 由于您需要建议,如果文件包含特殊字符,您可能可以重命名该文件。 fileUpload 控件具有该属性。也许如果你的文件名有特殊字符,只有你重命名它。您可以按照以下示例获取刚刚上传的文件名:bleedyellow.com/blogs/m.leusink/entry/…

标签: xpages lotus-notes lotus-domino lotus xpages-ssjs


【解决方案1】:

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

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

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

假设您的数据源名为 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 中测试过那个,所以这里计算的路径可能仍然不同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    • 2014-04-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多