// 첨부파일명 체크
if ( val.indexOf("&") > 0 || val.indexOf("%") > 0)
{
alert("첨부화일명에 & 혹은 % 문자는 입력하시면 안됩니다\n화일명을 수정해 주세요.");
var idx = obj.name.substring('file'.length);
// obj.style.display = 'none'; add_item2(++idx, val, 'Y', 'N', attachCnt);
return;
}这段代码是判断上传文件的文件名是否带有 & 或者 % 符号。现象:
A.当上传文件名中带有“&”符号的文件时:
1.弹出提示。
2.点击保存后刷新页面,带有“&”符号的文件不会被存到数据库。
B.当上传文件名中带有“%”符号的文件时:
1.弹出提示。
2.点击保存后刷新页面,带有“%”符号的文件会被存到数据库。为什么结果会有这样的差异?% 符号在JS里有特殊含义? 就算有,在判断里已经将他视为字符了啊,和 & 符号应该没区别吧。
有个方法是 上传之前把%改成别的字符再上传。肯定有如下代码:new MultipartRequest(request,saveDir,maxSize,char_encoding,new DefaultFileRenamePolicy() );
你可以继承DefaultFileRenamePolicy 类 并重写rename方法public class MyFileRenamePolicy extends DefaultFileRenamePolicy
{
public File rename(File f) {
//return super.rename(f);
return super.rename(new File(f.getParent(), f.getName().replace('%', 'P')));
}
};
然后把上面的调用改成:new MultipartRequest(request,saveDir,maxSize,char_encoding,new MyFileRenamePolicy() );