··조회 15,044
파일첨부시 view.php파일에서..
안녕하세요.. 운영자님덕분에 열심히 게시판만들고있는 이진수라고합니다... 요즘 이홈페이지에서 살고있네요... 질문은 다름이 아니라... 손병목님의 강좌중 파일첨부에대한 질문인데요.. write.php / insert.php / modify.php/ modify_ok.php/view.php모두 수정하여 파일첨부를 할 수있게 성공하였습니다.. 근데 의문점은 게시판에서 제목클릭후 게시물을 보면 상단에 첨부된파일이보이게했는데요(강좌대로) 그 파일을 클릭하면
다운로드가되지가않고.. 보여지는창 자체에서 그 첨부된파일이 그냥 보여지기만하네요..예를 들어 메모장으로 파일을만들어. .txt파일을 첨부해서 올리면 클릭시 다운로드가 아닌 그 메모장의 내용이 보이거든요... 꼭 열기를 한것과같이 되네요...
view.php소스부분은
<table width=100%><tr><td align=left>
<!-- 첨부파일 보기 추가 -->
<?
if ($array[file_name1] != '') {
echo "
<p align=left><font color=#c2c2c2> # 파일명 :
<a href={$array[file_name1]}>{$array[s_file_name1]}</a>
({$file_size}KB)</font>
";
}
?>
<!-- 첨부파일 보기 추가 끝.-->
</td></tr></table>
입니다.. 원래 그런건지 아님 수정을 해야되는건지.. 그부분이 강좌에 나오지가 않아서 궁금하네요.. 검색해서 스스로할라했는데... 다운로드되는거같은데.. 답변 부탁드리겠습니다. 즐거운 주말되세요
아래의 링크에서 첨부된파일 클릭시 그 현상을 알 수 있습니다...-_-
http://www.leejinsoo.net/php/view.php?page=1&number=12
또하나는 첨부파일 최대용량을 2mb로 하려하는데.... 잘 모르겠네요.. 매번난감한 질문을 하는건 아닌지 모르겠네요.. 빨리끝내고... 기초공부좀다시할라는데....휴.~ 시간은 빠르고 할건 많고..
다운로드가되지가않고.. 보여지는창 자체에서 그 첨부된파일이 그냥 보여지기만하네요..예를 들어 메모장으로 파일을만들어. .txt파일을 첨부해서 올리면 클릭시 다운로드가 아닌 그 메모장의 내용이 보이거든요... 꼭 열기를 한것과같이 되네요...
view.php소스부분은
<table width=100%><tr><td align=left>
<!-- 첨부파일 보기 추가 -->
<?
if ($array[file_name1] != '') {
echo "
<p align=left><font color=#c2c2c2> # 파일명 :
<a href={$array[file_name1]}>{$array[s_file_name1]}</a>
({$file_size}KB)</font>
";
}
?>
<!-- 첨부파일 보기 추가 끝.-->
</td></tr></table>
입니다.. 원래 그런건지 아님 수정을 해야되는건지.. 그부분이 강좌에 나오지가 않아서 궁금하네요.. 검색해서 스스로할라했는데... 다운로드되는거같은데.. 답변 부탁드리겠습니다. 즐거운 주말되세요
아래의 링크에서 첨부된파일 클릭시 그 현상을 알 수 있습니다...-_-
http://www.leejinsoo.net/php/view.php?page=1&number=12
또하나는 첨부파일 최대용량을 2mb로 하려하는데.... 잘 모르겠네요.. 매번난감한 질문을 하는건 아닌지 모르겠네요.. 빨리끝내고... 기초공부좀다시할라는데....휴.~ 시간은 빠르고 할건 많고..
댓글 5
첨부한 파일이 OS(즉, 윈도우즈)가 알고 있는 종류라면 윈도우즈는 파일 다운로드와 동시에 해당 프로그램을 실행합니다.
즉, 텍스트 파일이면 바로 열어보이고, 그림 파일도 바로 실행해버리죠.
그러나, zip 파일이나, 생소한 확장자의 파일일 경우는 무조건 다운로드를 하게 됩니다.
이런 원리를 이용해서, 해당 파일의 정보를 숨기는 방법을 사용하면 됩니다.
이 사이트의 PHP 강좌에는 포함되어 있지 않습니다.
그저, 첨부한 파일의 성격을 숨겨서 익스플로러로 하여금 무조건 다운로드하도록 만든다는 정도로만 알아두시면 될 것같습니다.
파일을 다운로드하는 부분을 이렇게 고치세요.
<a href={$array[file_name1]}>{$array[s_file_name1]}</a>
<a href=download.php?filename={$array[s_file_name1]}</a>
그러면 download.php 라는 파일이 있어야겠지요.
download.php 파일의 내용은 이렇게 합니다.
<?
$file="up/$filename"; // 파일이 실제로 있는 위치를..
$file_size=filesize($file); // 파일의 크기
Header("Content-type: file/unknown");
Header("Content-Disposition: attachment; filename=$filename");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
if(is_file("$file")){
$fp = fopen("$file","r");
if (!fpassthru($fp)){
fpassthru($fp);
}
}
?>
만드신강좌르 테스트도해봤는데.. 그림파일이나 spl파일은 그자리에서 바로 열리지만 txt 파일과 zip파일은 없는걸로나오던데 원래그런가요... 그래서 위와같이 바꿔도 그림파일과 sql파일은 다운로드가 되는데... 그 외에 .txt와 zip파일은 에러가나네요..
이것저것 다해봐도 잘 모르겠네요.. 염치없지만 다시 도움 요청할게요.. 부탁드립니다.
Header("Content-type: file/unknown");
Header("Content-Disposition: attachment; filename=$filename");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
위 부분을 아래와 같이 바꿔 보세요.
if(strstr($HTTP_USER_AGENT, "MSIE 5.5")) {
header("Content-Type: doesn/matter");
header("Content-Disposition: filename=$filename");
header("Content-Transfer-Encoding: binary");
header("Pragma: no-cache");
header("Expires: 0");
}
else {
Header("Content-type: file/unknown");
Header("Content-Disposition: attachment; filename=$filename");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
}
이래도 안 될려나...^^
테이블추가를 했는데. 그부분고ㅏ 맞지않아서 이상했나봅니다.
파일 자체도이상했구요 ㅋㅋㅋ 이제서야 해결하게되었네요..
그 칼럼지우고 하니 잘 되네요.. 것도 모르고..ㅋㅋㅋ 아무튼 감사합니다. 행복하세요