해결과제 : 유저가 웹페이지에서 다운로드 버튼을 클릭하면
특정 폴더안에 있는 파일들을 자동으로 .zip 파일로 압축한후 다운로드 시키고
다운로드가 완료되면 .zip파일을 삭제시키는것입니다.
1. 나타난 괴상한 현상
--> 유저페이지에서는 이상없이 잘되고 있는 소스를 그대로 동일 경로에 복사해서
관리자페이지에서 실행시켰는데..
압축 잘되고, 다운로드도 되지만, 다운로드 한 파일을 로컬에서 압축 풀려고 하면
"지원되지 않는 압축 포맷입니다." 이런식으로 나옵니다.
혹시나 압축 과정에 문제가 있었나 싶어서, 생성된 zip파일을 ftp랑 web주소로 접근해서
다운로드 받았더니...그렇게 다운받은 파일은 압축이 잘 풀리더군요.
똑같은 파일인데 말이죠.
그렇다면 압축과정에는 문제가 없었을 것이라고 유추할 수가 있어서
순수 다운로드 과정의 문제라고 생각했지만...
아래의 다운로드 부분 소스에서 문제가 될 만한 사항은 전혀 없는것 같은데
참 괴상한 괴상이 삼촌이네요.
더구나 아래 소스랑 완전 100% 동일한 다운로드 소스를 같은 사이트의
다른 페이지에서도 사용하고 있는데..또 거긴 아주 정상적으로 잘 되더군요.
정말 괴상하네요.
//여기서 부턴 다운로드 하는 부분
$len = filesize($file);
$filename = basename($file);
$ctype="application/zip";
$download_rate = 500;
if(file_exists($file) && is_file($file)){
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Descript-xion: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
//@readfile($file);
// flush content
flush();
// open file stream
$fp = fopen($file,"r");
while(!feof($fp)) {
// send the current file part to the browser
print fread($fp, round($download_rate * 1024));
// flush the content to the browser
flush();
// sleep one second
sleep(1);
}
fpassthru($fp);
fclose($fp);
unlink($file);
}else{
?>
<script language="javascript">
alert('error');
</script>
<?
}
exit;
특정 폴더안에 있는 파일들을 자동으로 .zip 파일로 압축한후 다운로드 시키고
다운로드가 완료되면 .zip파일을 삭제시키는것입니다.
1. 나타난 괴상한 현상
--> 유저페이지에서는 이상없이 잘되고 있는 소스를 그대로 동일 경로에 복사해서
관리자페이지에서 실행시켰는데..
압축 잘되고, 다운로드도 되지만, 다운로드 한 파일을 로컬에서 압축 풀려고 하면
"지원되지 않는 압축 포맷입니다." 이런식으로 나옵니다.
혹시나 압축 과정에 문제가 있었나 싶어서, 생성된 zip파일을 ftp랑 web주소로 접근해서
다운로드 받았더니...그렇게 다운받은 파일은 압축이 잘 풀리더군요.
똑같은 파일인데 말이죠.
그렇다면 압축과정에는 문제가 없었을 것이라고 유추할 수가 있어서
순수 다운로드 과정의 문제라고 생각했지만...
아래의 다운로드 부분 소스에서 문제가 될 만한 사항은 전혀 없는것 같은데
참 괴상한 괴상이 삼촌이네요.
더구나 아래 소스랑 완전 100% 동일한 다운로드 소스를 같은 사이트의
다른 페이지에서도 사용하고 있는데..또 거긴 아주 정상적으로 잘 되더군요.
정말 괴상하네요.
//여기서 부턴 다운로드 하는 부분
$len = filesize($file);
$filename = basename($file);
$ctype="application/zip";
$download_rate = 500;
if(file_exists($file) && is_file($file)){
//Begin writing headers
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Descript-xion: File Transfer");
//Use the switch-generated Content-Type
header("Content-Type: $ctype");
//Force the download
$header="Content-Disposition: attachment; filename=".$filename.";";
header($header );
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$len);
//@readfile($file);
// flush content
flush();
// open file stream
$fp = fopen($file,"r");
while(!feof($fp)) {
// send the current file part to the browser
print fread($fp, round($download_rate * 1024));
// flush the content to the browser
flush();
// sleep one second
sleep(1);
}
fpassthru($fp);
fclose($fp);
unlink($file);
}else{
?>
<script language="javascript">
alert('error');
</script>
<?
}
exit;
댓글 4개
13년 전
동일한 파일을 잘되는 서버에 올려두고
둘 다 동시에 테스트해보고
다운로드된 zip 파일의 파일사이즈를 체크해보세요
둘 다 동시에 테스트해보고
다운로드된 zip 파일의 파일사이즈를 체크해보세요
13년 전
readfile 을 써보세요.
http://php.net/manual/en/function.readfile.php
http://php.net/manual/en/function.readfile.php
letsgolee
13년 전
fpassthru($fp); 를 삭제하고 해보시기 바랍니다. 소스상 두번 보내는 결과가 됩니다. zip파일의 크기를 점검해보면 정확히 알 수 있을 거 같습니다.
AMDbest
13년 전
답변 해주신 분들 감사합니다.
http://php.net/manual/en/function.readfile.php
이 페이지에 있는 샘플 소스로 적용했더니 바로 되네요.
정말 감사합니다.ㅜ 와 이걸로 한 5시간 헤맨것 같은데 해결되었네요.
http://php.net/manual/en/function.readfile.php
이 페이지에 있는 샘플 소스로 적용했더니 바로 되네요.
정말 감사합니다.ㅜ 와 이걸로 한 5시간 헤맨것 같은데 해결되었네요.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 5530 | 13년 전 | 566 | ||
| 5529 | 13년 전 | 745 | ||
| 5528 | 13년 전 | 735 | ||
| 5527 | 13년 전 | 1044 | ||
| 5526 | 13년 전 | 1062 | ||
| 5525 | 13년 전 | 1828 | ||
| 5524 | 13년 전 | 704 | ||
| 5523 |
high8sky
|
13년 전 | 753 | |
| 5522 | 13년 전 | 3146 | ||
| 5521 | 13년 전 | 872 | ||
| 5520 |
즐거운상상을
|
13년 전 | 1133 | |
| 5519 | 13년 전 | 1515 | ||
| 5518 | 13년 전 | 981 | ||
| 5517 | 13년 전 | 1989 | ||
| 5516 | 13년 전 | 702 | ||
| 5515 |
순천홈페이지
|
13년 전 | 2858 | |
| 5514 | 13년 전 | 1185 | ||
| 5513 |
수야3019
|
13년 전 | 1515 | |
| 5512 | 13년 전 | 914 | ||
| 5511 | 13년 전 | 1070 | ||
| 5510 |
|
13년 전 | 1428 | |
| 5509 |
|
13년 전 | 1117 | |
| 5508 | 13년 전 | 1683 | ||
| 5507 | 13년 전 | 1555 | ||
| 5506 | 13년 전 | 725 | ||
| 5505 | 13년 전 | 2796 | ||
| 5504 |
물끄덩미끄덩
|
13년 전 | 960 | |
| 5503 |
후라보노보노
|
13년 전 | 1979 | |
| 5502 | 13년 전 | 873 | ||
| 5501 | 13년 전 | 1955 | ||
| 5500 | 13년 전 | 1822 | ||
| 5499 | 13년 전 | 1821 | ||
| 5498 | 13년 전 | 780 | ||
| 5497 |
레인보우1492
|
13년 전 | 1349 | |
| 5496 | 13년 전 | 1082 | ||
| 5495 |
jdjjun00
|
13년 전 | 2057 | |
| 5494 | 13년 전 | 917 | ||
| 5493 | 13년 전 | 994 | ||
| 5492 | 13년 전 | 1247 | ||
| 5491 | 13년 전 | 1105 | ||
| 5490 | 13년 전 | 896 | ||
| 5489 |
빨간망사챠챠
|
13년 전 | 2292 | |
| 5488 |
나태한개미
|
13년 전 | 1074 | |
| 5487 |
나태한개미
|
13년 전 | 1042 | |
| 5486 |
나태한개미
|
13년 전 | 2128 | |
| 5485 | 13년 전 | 1808 | ||
| 5484 | 13년 전 | 6541 | ||
| 5483 | 13년 전 | 1440 | ||
| 5482 |
Raincommunication
|
13년 전 | 777 | |
| 5481 |
|
13년 전 | 584 | |
| 5480 |
|
13년 전 | 1000 | |
| 5479 | 13년 전 | 1042 | ||
| 5478 |
|
13년 전 | 893 | |
| 5477 | 13년 전 | 679 | ||
| 5476 | 13년 전 | 1121 | ||
| 5475 | 13년 전 | 1440 | ||
| 5474 | 13년 전 | 833 | ||
| 5473 | 13년 전 | 655 | ||
| 5472 | 13년 전 | 1152 | ||
| 5471 | 13년 전 | 1615 | ||
| 5470 | 13년 전 | 963 | ||
| 5469 |
BackToHeaven
|
13년 전 | 2231 | |
| 5468 |
멀티트리플
|
13년 전 | 1113 | |
| 5467 | 13년 전 | 733 | ||
| 5466 | 13년 전 | 1311 | ||
| 5465 | 13년 전 | 1418 | ||
| 5464 | 13년 전 | 1498 | ||
| 5463 | 13년 전 | 700 | ||
| 5462 | 13년 전 | 1427 | ||
| 5461 | 13년 전 | 1073 | ||
| 5460 | 13년 전 | 2573 | ||
| 5459 | 13년 전 | 1069 | ||
| 5458 |
프로프리랜서
|
13년 전 | 959 | |
| 5457 | 13년 전 | 817 | ||
| 5456 |
PHPㅡASP프로그래머
|
13년 전 | 1335 | |
| 5455 |
뭐먹고살지ㅠ
|
13년 전 | 871 | |
| 5454 | 13년 전 | 1618 | ||
| 5453 |
프리랜서클럽
|
13년 전 | 1200 | |
| 5452 | 13년 전 | 841 | ||
| 5451 | 13년 전 | 789 | ||
| 5450 | 13년 전 | 7295 | ||
| 5449 |
PHPㅡASP프로그래머
|
13년 전 | 835 | |
| 5448 |
DBDBDB
|
13년 전 | 676 | |
| 5447 | 13년 전 | 1946 | ||
| 5446 |
헬프데스크
|
13년 전 | 1803 | |
| 5445 | 13년 전 | 970 | ||
| 5444 |
Werbershinta
|
13년 전 | 683 | |
| 5443 | 13년 전 | 1348 | ||
| 5442 | 13년 전 | 1066 | ||
| 5441 | 13년 전 | 1182 | ||
| 5440 | 13년 전 | 3173 | ||
| 5439 | 13년 전 | 841 | ||
| 5438 |
ddokkani
|
13년 전 | 769 | |
| 5437 | 13년 전 | 2633 | ||
| 5436 | 13년 전 | 1027 | ||
| 5435 |
PHPㅡASP프로그래머
|
13년 전 | 846 | |
| 5434 |
돗단배123
|
13년 전 | 1614 | |
| 5433 | 13년 전 | 1773 | ||
| 5432 |
|
13년 전 | 926 | |
| 5431 | 13년 전 | 774 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기