Фон:
У меня есть файл, который я загружаю, во время этого процесса, ссылка файла хранится в базе данных а не фактическом файле, acutal файл хранится в Файловой системе, в настоящее время храню его в моей локальной машине.
Цель:
Моя цель состоит в том, чтобы загрузить файл и загрузить файл правильно, который имеет специальные символы в ней - #,$,%,@ 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;
}
Надежда имеет некоторый смысл здесь.
Спасибо.
Если я правильно вас понял, вы хотите закодировать имя файла таким образом, чтобы при его загрузке и последующей загрузке вы могли найти тот же файл по имени файла.
Для этого можно использовать классы URLEncoder и URLDecoder .
Вы можете сделать это примерно так:
String fileName;
fileName = URLEncoder.encode("My ! String #", "UTF-8");
Это закодирует. Чтобы получить исходное имя файла:
String originalFileName = URLDecoder.decode(fileName, "UTF-8");
Вы можете использовать закодированное имя файла, чтобы загрузить файл из службы. Затем вы можете декодировать имя файла, чтобы сохранить его соответствующим образом.
Надеюсь, что это поможет.