diff --git a/src/scripts/services/aria2TaskService.js b/src/scripts/services/aria2TaskService.js index 5ca1030..13b35c1 100644 --- a/src/scripts/services/aria2TaskService.js +++ b/src/scripts/services/aria2TaskService.js @@ -9,9 +9,11 @@ } var path = file.path; + var needUrlDecode = false; if (!path && file.uris && file.uris.length > 0) { path = file.uris[0].uri; + needUrlDecode = true; } var index = path.lastIndexOf('/'); @@ -22,12 +24,21 @@ var fileNameAndQueryString = path.substring(index + 1); var queryStringStartPos = fileNameAndQueryString.indexOf('?'); + var fileName = fileNameAndQueryString; - if (queryStringStartPos <= 0) { - return fileNameAndQueryString; + if (queryStringStartPos > 0) { + fileName = fileNameAndQueryString.substring(0, queryStringStartPos); } - return fileNameAndQueryString.substring(0, queryStringStartPos); + if (needUrlDecode) { + try { + fileName = decodeURI(fileName); + } catch (ex) { + ariaNgLogService.warn('[aria2TaskService.getFileName] failed to url decode file name, original file name: ' + fileName, ex); + } + } + + return fileName; }; var calculateDownloadRemainTime = function (remainBytes, downloadSpeed) {