다중 파일 업로드/다운로드 관련 질문입니다.
본문
다중파일 업로드 다운로드 문제인데
업로드는 여차여차 해서 서버와 DB내에 저장이 됩니다.
저장시엔 저장한날짜^파일명.확장자 이런식으로 저장이되구요.
다중파일 다운로드 시 링크를 어떤식으로 걸고
다운로드 헤더쪽에 어떤식으로 조건문을 걸어야 할지 감이 잘 안와서요..
일단 아무렇게나 걸긴 했는데 저게 아닌듯 해요. 파
일이 여러개 있으면 계속 하나만 다운받으니까요 ㅠㅠ
아님 링크를 걸때 onclick을 써서 스크립트를 만들어야 하는지..ㅠㅠ
혹시 보시고 시간 남으시면 어딜 수정해야 할지
알려주시면 정말 감사하겠습니다.
view.php
------------------------------------------------------------------------------
<td align='center' bgcolor='ececec' style="width:120;">붙임파일</td>
<td name='1'>
<?
if($view_row[filename1]){
$downloadfile1 = explode("_",$view_row[filename1]);
echo " <a href='down.php?num=$view_row[num]&downloadfile=$view_row[filename1]'> $downloadfile1[1]</a>";
echo "";
}
?>
<?
if($view_row[filename2]){
$downloadfile2 = explode("_",$view_row[filename2]);
echo " <a href='down.php?num=$view_row[num]&filename1=$view_row[filename2]'> $downloadfile2[1]</a>";
echo "";
}
?>
<?
if($view_row[filename3]){
$downloadfile3 = explode("_",$view_row[filename3]);
echo " <a href='down.php?num=$view_row[num]&filename1=$view_row[filename3]'> $downloadfile3[1]</a>";
echo "";
}
?>
<?
if($view_row[filename4]){
$downloadfile4 = explode("_",$view_row[filename4]);
echo " <a href='down.php?num=$view_row[num]&filename1=$view_row[filename4]'> $downloadfile4[1]</a>";
echo "";
}
?>
<?
if($view_row[filename5]){
$downloadfile5 = explode("_",$view_row[filename5]);
echo " <a href='down.php?num=$view_row[num]&filename1=$view_row[filename5]'> $downloadfile5[1]</a>";
echo "";
}
?>
</td>
</tr>
-------------------------------------------------------------------------------------------
down.php
-------------------------------------------------------------------------------------------
include "./db_connect.inc";
$sel_str = "SELECT * FROM board WHERE num=$num";
$sel_qry = mysql_query($sel_str) or die(mysql_error());
$row = mysql_fetch_array($sel_qry);
$path1 = "./upload/".$row['filename1'];
$path2 = "./upload/".$row['filename2'];
$path3 = "./upload/".$row['filename3'];
$path4 = "./upload/".$row['filename4'];
$path5 = "./upload/".$row['filename5'];
if($row['filename1']) {
$path = $path1;
$rname=explode("_",$row['filename1']);
$name = $rname[1];
}
else if($row['filename2']) {
$path = $path2;
$rname=explode("_",$row['filename2']);
$name = $rname[1];
}
else if($row['filename3']) {
$path = $path2;
$rname=explode("_",$row['filename2']);
$name = $rname[1];
}
else if($row['filename4']) {
$path = $path2;
$rname=explode("_",$row['filename2']);
$name = $rname[1];
}
else if($row['filename5']) {
$path = $path2;
$rname=explode("_",$row['filename2']);
$name = $rname[1];
}
header("Content-type: application/octetstream");
header("Content-disposition: attachment; filename=\"$name\"");
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header("Content-Length: " . filesize($path));
header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
ob_clean();
readfile("$path");
exit;
?>
답변 4
두번째 방법으로 링크를 거는건 중개해주는 a.php 파일에 링크를 거는 거구요.
a.php 파일에 $bo_table, $wr_id 값만 던져주고
a.php 파일에서는 해당 글에 첨부된 파일 목록을 읽어와서
파일갯수만큼 download.php 파일 새창으로 오픈하는 거죠.
근데 이렇게 하면 자동 팝업이기 때문에 팝업차단이 걸려있으면 못쓸수도 있을거 같구요.
iframe 이나 기타 여러가지 트릭등을 동반해야 할것 같아요.
압축해서 한번에 전송하도록 하는 방법을 권장해드립니다. ㅋ
써보진 않았는데 이걸 쓰면 되지 않을까요~?
https://php.net/manual/kr/book.zip.php
단순링크로 다중파일을 받는 방법은 없을것 같고, 이메일 첨부파일 받는것 처럼 압축파일을 생성해서 전송하면 될것 같은데요~
서버스크립트요? 가능은 하겠지만... 만약에 파일이 용량이 크면 지연이 생길텐데 지원되는 라이브러리를 쓰는게 안전하지 않을까요. 어차피 같은 문제긴 하겠지만요.
아니면 중간에 페이지를 하나 둬서
다운로드 링크 클릭 -> a.php -> 새창으로 1번파일 다운로드, 새창으로 2번 파일 다운로드, 새창으로 3번파일 다운로드 이런식으로 다운로드 창을 열게 하는건....
제가 질문내용을 잘못 이해했나보네요.
전 여러 파일을 동시에 다운로드 받는 방법을 물어보시는 줄 알고 답변드렸던건데
혼동을 드려서 죄송하네요~