今天客户突然艾特我说系统上有个文件无法下载,吓得我一哆嗦。赶紧上去看看,左看右看也没发现啥问题,不外乎就是文件名带有空格
这是js a标签的代码
formatter: function (cellvalue, options, rowObject) {
if (cellvalue) {
var nameList = cellvalue.split(",");
var str = "";
var ppp = rowObject.PATH.split("\\");
str += "<a οnclick=downLoadFile('" + ppp[ppp.length - 1] + "\\\\" + rowObject.BATCHNO + '-DELIVERY.xlsx' + "') style='cursor: pointer;'>delivery.xlsx</a></br>";
return str;
} else {
return "";
}
}
str解析出来/invoice/R20TZ CN BUFFER-3271/R20TZ CN BUFFER-SHIPMENT.xlsx
然后页面点击 delivery.xlsx 无任何反应。之后把文件名空格统一改成-代替就没问题了。本来结束了,但是我发现下载的另外一个文件也是带有空格的却可以下载;
formatter: function (cellvalue, options, rowObject) {
if (cellvalue) {
return "<a οnclick='downLoadFileExcel(this)' fileName='" + rowObject.ERRORPATH + "' style='cursor: pointer;'>" + cellvalue + "</a>";
} else {
return "";
}
}
function downLoadFile(str) {
var form = $("<form>"); //定义一个form表单
form.attr('style', 'display:none'); //在form表单中添加查询参数
form.attr('target', 'id_iframe');
form.attr('method', 'post');
form.attr('action', "/leshvoice/exportInvoice");
$('body').append(form); //将表单放置在web中
var input1 = $('<input>');
input1.attr('type', 'hidden');
input1.attr('name', 'entityMap[fileName]');
input1.attr('value', str);
form.append(input1);
form.submit(); //表单提交
}
对比了一下发现 下面的a标签的onclick属性被’'包括了。所以之后在第一个a的 onclick用" "包括就可以下载了;
str += "<a οnclick=\"downLoadFile('" + ppp[ppp.length - 1] + "\\\\" + rowObject.BATCHNO + '-DELIVERY.xlsx' + "')\" style='cursor: pointer;'>delivery.xlsx</a></br>";
function downLoadFileExcel(str) {
var names = new Array();
var $a = $(str).parent().find("a");
$.each($a, function (i, n) {
if ($(n).text() != "x") {
names.push($(n).attr("fileName"));
}
});
var form = $("<form>"); //定义一个form表单
form.attr('style', 'display:none'); //在form表单中添加查询参数
form.attr('target', 'id_iframe');
form.attr('method', 'post');
form.attr('action', "/leshvoice/downLoadFileExcel");
$('body').append(form); //将表单放置在web中
var input1 = $('<input>');
input1.attr('type', 'hidden');
input1.attr('name', 'entityMap[fileNames]');
input1.attr('value', names.toString());
form.append(input1);
form.submit(); //表单提交
}
求解,我知道href中的路径需要转义空格,但这个我没看出啥问题,楼主js一般,一年多没写了…