在Xpages上传控件中,我可以上传带有特殊字符的照片文件。但是在视图中,一些特殊字符变为下划线(例如。{#[to _],有些不是(如空格,+)。使用函数attachmentObject.getName()时,我可以获得带有特殊字符的原始文件名。因此,当我找回那种文件时,我遇到了问题。对我有什么建议吗?谢谢。
答案 0 :(得分:2)
问题来自哈希(#),因为这是URL中非常特殊的字符。它不能轻易地转换为特殊的URL-Encoded表单,因为它是URL方案的有效字符,并且具有特殊含义。使用ExtLib @EncodeUrl函数也不起作用,因为这个会在你的哈希(我认为是一个bug)前面切断你的字符串,导致你的服务器上不存在的资源请求,从而导致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中测试过那个,所以计算出的路径在这里可能会有所不同。