Справочная информация:
У меня есть файл, который я загружаю, во время этого процесса ссылка на файл сохраняется в базе данных, а не фактический файл, текущий файл сохраняется вФайловая система, в настоящее время храню ее на моей локальной машине.
Цель:
Моя цель - загрузить файл и загрузить его правильно, в котором есть специальные символы - #,$,%,@ etc
.
Проблема:
Я могу загрузить файл со специальным символом, но не могу загрузить файл со специальными символами.Кроме того, я не могу вносить какие-либо изменения в Download Servlet
, поскольку он является частью Framework
, поэтому все, с чем я могу работать, это Upload Servlet
, поэтому я хочу загрузить файл со специальными символами таким образом, чтобы я могможете скачать их.
Я попытался создать псевдоним для имени файла, где в я заменяю специальные символы символом '_'
, этот подход работает нормально, и я могу загрузить файл, но фактическое имя файла здесь не поддерживается,все специальные символы в имени файла заменяются символом '_'
, и это недопустимо, поскольку пользователь должен указать имя файла.
Любые предложения или подходы:
Код:
public ModelAndView save(HttpServletRequest request, HttpServletResponse response, Object command,
ModelAndView modelView, BindException errors) throws Exception {
String newFileName = checkForSpecialCharsAndGetNewFileName(file.getOriginalFilename());
System.out.println("alias filename="+ newFileName);
String url = "f" + (String.valueOf(System.currentTimeMillis())) + "_" + newFileName;
String fileName = file.getOriginalFilename();
System.out.println("FileName "+ fileName);
}
//Code to replace all special characters in the incoming file with '_' symbol.
private String checkForSpecialCharsAndGetNewFileName (String originalFileName) {
final String[] splChars = {"#", "+", "$"};
String newString = originalFileName;
for (int i=0; i<splChars.length; i++)
newString = StringUtils.replace(newString, splChars[i], "_");
return newString;
}
Надеюсь, здесь есть какой-то смысл.
Спасибо.