배경 :Java : 파일을 업로드하고 다운로드하는 동안 특수 문자를 파일 이름에 사용하는 방법은 무엇입니까?
내가 파일의 링크는 데이터베이스에 저장되고 실제 파일은 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;
}
희망이 여기에 어떤 의미를 만들고있다.
감사합니다.
저는 스프링을 사용하지 않고 정확하게 클라이언트 측에서 사용하는 방법이 명확하지 않으므로 자세히 설명 할 수는 없지만 언급 된 문자는 URL의 예약 문자이므로 필요합니다. URL 인코딩이 제대로되어 있어야합니다. – BalusC
스프링 프레임 워크를 사용하여 URL을 인코딩하는 방법을 잘 모르겠습니다. Spring.From 클라이언트 측에서는 추가 프로세싱을 수행하는 서블릿 (업로드 및 다운로드 서블릿)에 대한 참조를 만들고 있습니다. – Rachel
또한 URlEncoder를 사용하여 URL을 인코딩하더라도 특수 문자가 포함 된 파일을 다운로드 할 수없는 경우에도 가능한 이유가 무엇인지 알 수 없습니다. – Rachel