파일 다운로드시 파일 이름 깨지는 오류 정보
파일 다운로드시 파일 이름 깨지는 오류본문
안녕하세요~
파일 첨부를 하고 포인트 다운로드시 크롬에서는 제대로 나오는데 익스버전 8 에서는 파일
이름이 깨져서 나옵니다.
포인트 없이 다운로드하는것은 자바스크립트를 안쓰니 파일이름 제대로 나오구요.
포인트를 걸면 자바스크립트를 걸치면서 이름이 깨져 나오고 있어요~
저만그런건지요..?
<script type="text/javascript">
function file_download(link, file) {
<? if ($board[bo_download_point] < 0) { ?>if (confirm("'"+decodeURIComponent(file)+"' 파일을 다운로드 하시면 포인트가 차감(<?=number_format($board[bo_download_point])?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?"))<?}?>
document.location.href=link;
}
</script>
파일 첨부를 하고 포인트 다운로드시 크롬에서는 제대로 나오는데 익스버전 8 에서는 파일
이름이 깨져서 나옵니다.
포인트 없이 다운로드하는것은 자바스크립트를 안쓰니 파일이름 제대로 나오구요.
포인트를 걸면 자바스크립트를 걸치면서 이름이 깨져 나오고 있어요~
저만그런건지요..?
<script type="text/javascript">
function file_download(link, file) {
<? if ($board[bo_download_point] < 0) { ?>if (confirm("'"+decodeURIComponent(file)+"' 파일을 다운로드 하시면 포인트가 차감(<?=number_format($board[bo_download_point])?>점)됩니다.\n\n포인트는 게시물당 한번만 차감되며 다음에 다시 다운로드 하셔도 중복하여 차감하지 않습니다.\n\n그래도 다운로드 하시겠습니까?"))<?}?>
document.location.href=link;
}
</script>
댓글 전체

decodeURIComponent(file)
파일명의 주소를 꽈준걸(엔코드) 풀어주다 보니 그런겁니다 ( 익스,불여우, 크롬 각각 제멋대로가 많습니다)
넣어줄때 꽈서 넣어주면 제대로 디코드 되어서 보이겠지만 제대로된 녀석을 디코드 시키거나 혹은 엔코드
시켜버리면 위와 같은 형태로 나올수 밖에 없습니다 (부라우저 지원여부에 따라 다릅니다 )
디비나 데이터가 일반적인 한글로 저장된 형태라면
그냥 decodeURIComponent(file) 없이 file 만 쓰시고 그렇지 않고 디코딩되어서 입력된 형태라면
위의 방법이 맞습니다
하지만
자바스크립트의 디코딩 방법과 php의 디코딩 방법이 조금씩 틀린 부분이 있으니 거기에 브라우져 지원여부도 조금씩 틀립니다 전에 이것 때문에 저도 한번 애먹은적이 있거든요
제일 좋은건 그냥 원래의 이름으로 입력데이터를 넣고 받아오는것이며
보안상 주소를 꽈줄 필요가 있으면
필드를 하나 더쓴다거나 해서 실제이름과 저장된 이름을 달리하여 보안을 유지시키고
받아올때는 저장된 이름으로 디비에서
받아오고
표기할 때는
실제이름으로 치환해서 보여주면 문제는 해결됩니다
파일명의 주소를 꽈준걸(엔코드) 풀어주다 보니 그런겁니다 ( 익스,불여우, 크롬 각각 제멋대로가 많습니다)
넣어줄때 꽈서 넣어주면 제대로 디코드 되어서 보이겠지만 제대로된 녀석을 디코드 시키거나 혹은 엔코드
시켜버리면 위와 같은 형태로 나올수 밖에 없습니다 (부라우저 지원여부에 따라 다릅니다 )
디비나 데이터가 일반적인 한글로 저장된 형태라면
그냥 decodeURIComponent(file) 없이 file 만 쓰시고 그렇지 않고 디코딩되어서 입력된 형태라면
위의 방법이 맞습니다
하지만
자바스크립트의 디코딩 방법과 php의 디코딩 방법이 조금씩 틀린 부분이 있으니 거기에 브라우져 지원여부도 조금씩 틀립니다 전에 이것 때문에 저도 한번 애먹은적이 있거든요
제일 좋은건 그냥 원래의 이름으로 입력데이터를 넣고 받아오는것이며
보안상 주소를 꽈줄 필요가 있으면
필드를 하나 더쓴다거나 해서 실제이름과 저장된 이름을 달리하여 보안을 유지시키고
받아올때는 저장된 이름으로 디비에서
받아오고
표기할 때는
실제이름으로 치환해서 보여주면 문제는 해결됩니다
제가 원하는 답변을 주셔서 감사합니다~ 많은 도움이 됐습니다!