해결과제 : 유저가 웹페이지에서 다운로드 버튼을 클릭하면
특정 폴더안에 있는 파일들을 자동으로 .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시간 헤맨것 같은데 해결되었네요.
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 5830 | 13년 전 | 1190 | ||
| 5829 | 13년 전 | 5057 | ||
| 5828 | 13년 전 | 6441 | ||
| 5827 | 13년 전 | 1216 | ||
| 5826 |
|
13년 전 | 543 | |
| 5825 | 13년 전 | 901 | ||
| 5824 |
|
13년 전 | 1886 | |
| 5823 | 13년 전 | 5624 | ||
| 5822 |
jfascas
|
13년 전 | 1058 | |
| 5821 | 13년 전 | 1706 | ||
| 5820 | 13년 전 | 1320 | ||
| 5819 |
itlang
|
13년 전 | 513 | |
| 5818 | 13년 전 | 1313 | ||
| 5817 | 13년 전 | 785 | ||
| 5816 | 13년 전 | 626 | ||
| 5815 | 13년 전 | 6138 | ||
| 5814 | 13년 전 | 864 | ||
| 5813 |
악마의유혹
|
13년 전 | 463 | |
| 5812 | 13년 전 | 2812 | ||
| 5811 | 13년 전 | 1186 | ||
| 5810 | 13년 전 | 3536 | ||
| 5809 | 13년 전 | 1359 | ||
| 5808 | 13년 전 | 1068 | ||
| 5807 | 13년 전 | 580 | ||
| 5806 | 13년 전 | 562 | ||
| 5805 |
angrysol
|
13년 전 | 823 | |
| 5804 | 13년 전 | 1013 | ||
| 5803 | 13년 전 | 1744 | ||
| 5802 |
angrysol
|
13년 전 | 1069 | |
| 5801 |
후라보노보노
|
13년 전 | 2157 | |
| 5800 | 13년 전 | 1115 | ||
| 5799 |
|
13년 전 | 4199 | |
| 5798 |
|
13년 전 | 3370 | |
| 5797 |
|
13년 전 | 4940 | |
| 5796 | 13년 전 | 7552 | ||
| 5795 | 13년 전 | 2778 | ||
| 5794 | 13년 전 | 2233 | ||
| 5793 |
|
13년 전 | 665 | |
| 5792 | 13년 전 | 2976 | ||
| 5791 | 13년 전 | 848 | ||
| 5790 | 13년 전 | 4331 | ||
| 5789 |
|
13년 전 | 2481 | |
| 5788 |
|
13년 전 | 1855 | |
| 5787 |
오지랖선생
|
13년 전 | 1623 | |
| 5786 | 13년 전 | 5931 | ||
| 5785 | 13년 전 | 1769 | ||
| 5784 |
|
13년 전 | 1455 | |
| 5783 | 13년 전 | 1315 | ||
| 5782 |
|
13년 전 | 2826 | |
| 5781 | 13년 전 | 2858 | ||
| 5780 | 13년 전 | 1162 | ||
| 5779 |
|
13년 전 | 1358 | |
| 5778 |
오리진소프트
|
13년 전 | 4609 | |
| 5777 | 13년 전 | 686 | ||
| 5776 | 13년 전 | 1166 | ||
| 5775 | 13년 전 | 1474 | ||
| 5774 | 13년 전 | 1897 | ||
| 5773 |
|
13년 전 | 1925 | |
| 5772 | 13년 전 | 1691 | ||
| 5771 | 13년 전 | 4799 | ||
| 5770 | 13년 전 | 1133 | ||
| 5769 | 13년 전 | 6109 | ||
| 5768 |
|
13년 전 | 1581 | |
| 5767 | 13년 전 | 1688 | ||
| 5766 |
프로프리랜서
|
13년 전 | 1390 | |
| 5765 |
|
13년 전 | 1042 | |
| 5764 | 13년 전 | 1762 | ||
| 5763 |
|
13년 전 | 787 | |
| 5762 |
|
13년 전 | 2291 | |
| 5761 | 13년 전 | 624 | ||
| 5760 | 13년 전 | 625 | ||
| 5759 | 13년 전 | 3272 | ||
| 5758 | 13년 전 | 1087 | ||
| 5757 |
|
13년 전 | 745 | |
| 5756 | 13년 전 | 570 | ||
| 5755 | 13년 전 | 1066 | ||
| 5754 |
|
13년 전 | 2232 | |
| 5753 | 13년 전 | 679 | ||
| 5752 | 13년 전 | 1551 | ||
| 5751 | 13년 전 | 772 | ||
| 5750 | 13년 전 | 759 | ||
| 5749 | 13년 전 | 2581 | ||
| 5748 | 13년 전 | 1014 | ||
| 5747 | 13년 전 | 1223 | ||
| 5746 |
|
13년 전 | 657 | |
| 5745 | 13년 전 | 1662 | ||
| 5744 | 13년 전 | 692 | ||
| 5743 | 13년 전 | 837 | ||
| 5742 |
프로프리랜서
|
13년 전 | 584 | |
| 5741 | 13년 전 | 646 | ||
| 5740 | 13년 전 | 638 | ||
| 5739 | 13년 전 | 732 | ||
| 5738 | 13년 전 | 1927 | ||
| 5737 | 13년 전 | 995 | ||
| 5736 | 13년 전 | 1097 | ||
| 5735 | 13년 전 | 1997 | ||
| 5734 | 13년 전 | 1146 | ||
| 5733 | 13년 전 | 2791 | ||
| 5732 |
JOYCOM
|
13년 전 | 649 | |
| 5731 | 13년 전 | 3310 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기