솔티독
80
2021-08-05 11:11:30
3
138

spring-java단에서 url이 인식이 안 되나요?


컨트롤러에서 String에 직접 url 주소를 넣었는데 찍힌 에러를 보니 http:// 이게 http:\ 이렇게 바뀌어있으면서 FileNotFoundException이 떴습니다.


@ResponseBody
	@RequestMapping("download.do")
	public void download(Locale locale, Model model, HttpServletRequest request, HttpServletResponse response) {
		String spec = "http://서버주소:포트번소/video/20210730/202107301750_1800.mp4";
		String outputDir = "C:/output";
		String contentType = "video/mp4";
		
		File file = new File(spec);
		long fileLength = file.length();
		
		response.setHeader("Content-Disposition", "attachment; filename=\"" + spec + "\";");
		response.setHeader("Content-Transfer_encoding", "binary");
		response.setHeader("Content-Type", contentType);
		response.setHeader("Content-Length", "" + fileLength);
		response.setHeader("Pragma", "no-cache;");
		response.setHeader("Expires", "-1;");
		
		try(
			FileInputStream fis = new FileInputStream(spec);
			OutputStream out = response.getOutputStream();
			) {
			int readCount = 0;
			byte[] buffer = new byte[1024];
			
			while((readCount = fis.read(buffer)) != -1) {
				out.write(buffer, 0, readCount);
			}
		} catch(Exception e) {
			e.printStackTrace();
		}
	}

로그에는


java.io.FileNotFoundException: http:\서버주소:포트번소\video\20210730\202107301750_1800.mp4

이렇게 뜹니다.

java에선 url을 직접 쓰면 안 되나요? 왜 저렇게 주소가 바뀌나요??

0
  • 답변 3

  • jay8126
    83
    2021-08-05 11:41:30 작성 2021-08-05 11:42:16 수정됨

    URL이 아니고 로컬 서버의 파일 경로를 입력하셔야 합니다.

    "C:\test\test.mp4"

    이런 식으로요.

    구분자는 자바에서 리눅스/윈도우 별로 자동 변환하기 때문에 변환된 것입니다.


  • 솔티독
    80
    2021-08-05 11:47:49

    아... 로컬만 가능한가요
    그럼 혹시 저처럼 서버 컴퓨터의 url 경로를 받아서 하려면 어떻게 해야하는지 조언 가능할까요?

  • nathak
    700
    2021-08-05 12:44:38

    httpClient 라이브러리를 이용하세요

  • 로그인을 하시면 답변을 등록할 수 있습니다.