다운로드 소스
컨텐츠 정보
- 18,718 조회
- 1 댓글
- 5 추천
- 목록
본문
안녕하세요...
공간 입니다.. ^^;
아래에 다운로드 소스 팁을 올렸었는데...
게시판에서나 다른곳에서 그냥 down.php?no=1
이런씩으로 번호만 넘겨서 다운로드 하는 소스를 올려 봅니다...
많이 알고 있는 소스고 허접 하지만.... 올려봅니다...
저도 왕초보 시절이 있었던지라... (지금도 왕초보지만.. ^^;)
많은 덕담? 부탁드립니다.. ^^;;;
그럼....
<?
session_start();
#down.php 를 새로운 창으로 띄움 (popup 등)
# 설정 파일 읽어들임 dbconnection 등
include "../lib/setup.php";
# 다운로드 회수 증가나 다른부분 넣음
# 아래부터 다운로드 부분
# file1 = 업로드시 올린 파일명 (test.zip)
# sfile1 = 실제 서버에 들어가 있는 파일저장 장소 (directory 포함 - /home/test/www/data/test.zip)
$query="select no,file1,sfile1 from $board where no=$no";
$result=mysql_query($query);
if($result) {
$total=mysql_num_rows($result);
# 파일 정보가 DB 에 있는지 체크
if($total) {
$row=mysql_fetch_array($result);
$file=$row[sfile1]; # 서버에 저장된 파일 정보
$dnfile=$row[file1]; # 사용자가 받아갈 파일명
} else {
echo "
<script>
window.alert('저장할 파일에 문제가 발생하였습니다.');
history.back();
</script>
";
exit;
}
} else {
echo "
<script>
window.alert('DB Error');
history.back();
</script>
";
# echo mysql_error();
exit;
}
$dn = "1"; // 1 이면 다운 0 이면 브라우져가 인식하면 화면에 출력
$dn_yn = ($dn) ? "attachment" : "inline";
$bin_txt = "1";
$bin_txt = ($bin_txt) ? "r" : "rb";
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $HTTP_USER_AGENT))
{
if(strstr($HTTP_USER_AGENT, "MSIE 5.5"))
{
header("Content-Type: doesn/matter");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.0"))
{
Header("Content-type: file/unknown");
header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.1"))
{
Header("Content-type: file/unknown");
header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 6.0"))
{
Header("Content-type: application/x-msdownload");
Header("Content-Length: ".(string)(filesize("$file"))); // 이부부을 넣어 주어야지 다운로드 진행 상태가 표시
Header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
} else {
Header("Content-type: file/unknown");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if (is_file("$file")) {
$fp = fopen("$file", "rb");
if (!fpassthru($fp))
fclose($fp);
} else {
echo "해당 파일이나 경로가 존재하지 않습니다.";
}
?>
공간 입니다.. ^^;
아래에 다운로드 소스 팁을 올렸었는데...
게시판에서나 다른곳에서 그냥 down.php?no=1
이런씩으로 번호만 넘겨서 다운로드 하는 소스를 올려 봅니다...
많이 알고 있는 소스고 허접 하지만.... 올려봅니다...
저도 왕초보 시절이 있었던지라... (지금도 왕초보지만.. ^^;)
많은 덕담? 부탁드립니다.. ^^;;;
그럼....
<?
session_start();
#down.php 를 새로운 창으로 띄움 (popup 등)
# 설정 파일 읽어들임 dbconnection 등
include "../lib/setup.php";
# 다운로드 회수 증가나 다른부분 넣음
# 아래부터 다운로드 부분
# file1 = 업로드시 올린 파일명 (test.zip)
# sfile1 = 실제 서버에 들어가 있는 파일저장 장소 (directory 포함 - /home/test/www/data/test.zip)
$query="select no,file1,sfile1 from $board where no=$no";
$result=mysql_query($query);
if($result) {
$total=mysql_num_rows($result);
# 파일 정보가 DB 에 있는지 체크
if($total) {
$row=mysql_fetch_array($result);
$file=$row[sfile1]; # 서버에 저장된 파일 정보
$dnfile=$row[file1]; # 사용자가 받아갈 파일명
} else {
echo "
<script>
window.alert('저장할 파일에 문제가 발생하였습니다.');
history.back();
</script>
";
exit;
}
} else {
echo "
<script>
window.alert('DB Error');
history.back();
</script>
";
# echo mysql_error();
exit;
}
$dn = "1"; // 1 이면 다운 0 이면 브라우져가 인식하면 화면에 출력
$dn_yn = ($dn) ? "attachment" : "inline";
$bin_txt = "1";
$bin_txt = ($bin_txt) ? "r" : "rb";
if(eregi("(MSIE 5.0|MSIE 5.1|MSIE 5.5|MSIE 6.0)", $HTTP_USER_AGENT))
{
if(strstr($HTTP_USER_AGENT, "MSIE 5.5"))
{
header("Content-Type: doesn/matter");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.0"))
{
Header("Content-type: file/unknown");
header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 5.1"))
{
Header("Content-type: file/unknown");
header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
header("Pragma: no-cache");
header("Expires: 0");
}
if(strstr($HTTP_USER_AGENT, "MSIE 6.0"))
{
Header("Content-type: application/x-msdownload");
Header("Content-Length: ".(string)(filesize("$file"))); // 이부부을 넣어 주어야지 다운로드 진행 상태가 표시
Header("Content-Disposition: attachment; filename=$dnfile");
Header("Content-Transfer-Encoding: binary");
Header("Pragma: no-cache");
Header("Expires: 0");
}
} else {
Header("Content-type: file/unknown");
Header("Content-Length: ".(string)(filesize("$file")));
Header("Content-Disposition: $dn_yn; filename=$dnfile");
Header("Content-Description: PHP3 Generated Data");
Header("Pragma: no-cache");
Header("Expires: 0");
}
if (is_file("$file")) {
$fp = fopen("$file", "rb");
if (!fpassthru($fp))
fclose($fp);
} else {
echo "해당 파일이나 경로가 존재하지 않습니다.";
}
?>
관련자료
-
링크
댓글 1
nuno님의 댓글
보통 익스용 다운로드 프로그램 제작시에는
Content-Disposition: inline; filename=파일이름
을 사용합니다
attachment 를 사용시에는 다운이 다 끝났는데도 마우스에 모래시계가 계속 남는다는
겁니다. inline 을 쓰면 그런현상은 없어지더군요(음 -_-)
또한 여러가지 이점이 있죠~
download.php?filename=이쁘네.zip 요런게 다운로드 박스창에 뜨지만
inline 사용시 이쁘네.zip 으로 깔끔하게 나온다는 -_-;;
Content-Disposition: inline; filename=파일이름
을 사용합니다
attachment 를 사용시에는 다운이 다 끝났는데도 마우스에 모래시계가 계속 남는다는
겁니다. inline 을 쓰면 그런현상은 없어지더군요(음 -_-)
또한 여러가지 이점이 있죠~
download.php?filename=이쁘네.zip 요런게 다운로드 박스창에 뜨지만
inline 사용시 이쁘네.zip 으로 깔끔하게 나온다는 -_-;;