[JS] 멀티 파일다운로드 꽁수로 구현하기

다중 파일 다운로드를 스크립트 꽁수로 구현해봅니다.
몇 줄 안되는 소스를 보면 알겠지만, 보이지 않는 iframe을 생성해서 경로를 걸어주는 게 전부입니다.

간단하게 멀티 파일다운로드를 구현할 수 있다는 것 이외엔 장점이 별로 없는 꽁수입니다(꽁수는 꽁수일뿐~). ^^;;;

이 부분이 소스입니다.

/**
* by 행복한고니(20041007)
*/
function mdown(N)
{
var objs = document.getElementsByName(N);
var Body = document.getElementsByTagName('BODY')[0];
var j;

for (var i=j=0; i < objs.length; i++) {
if (!objs[i].checked) continue;
if (mdown.fList[j] == undefined) {
mdown.fList[j] = document.createElement("IFRAME");
mdown.fList[j].style.display = 'none';

Body.appendChild(mdown.fList[j]);
}
mdown.fList[j].src = mdown.GetURL(objs[i].value);
j++;
}
}

mdown.fList = [];

//----------------------------------------------------------------
// 사용자 정의 함수 구현부
//----------------------------------------------------------------
mdown.GetURL = function(val) {
// 이 함수를 각자의 프로그램 사양에 따라 적당히 만들어주세요.
// 체크박스에 있던 value 값이 val로 전달됩니다.

return 'http://mysite.com/download.php?fileid='+val+');';
}

우선 파일 다운로드를 하는 프로그램을 download.php 라고 가정합니다.

이 때, download.php 에서 파일을 다운로드 할 때 download.php?fileid=아이디번호 와 같은 식으로 쓴다고 가정합니다. 이 규칙에 의해서 mdown.GetURL 함수를 사용자가 작성합니다.

스크립트를 포함한 후, 예제 HTML은 다음과 같이 쓸 수 있습니다.

1번 파일

2번 파일

3번 파일

4번 파일

아래가 예제입니다.
[#NOBR_START#]

자바스크립트로 구현한 5kb짜리 울펜슈타인 3D

슬라이딩 메뉴 스크립트 파일

이 팁에 쓰인 파일

[#NOBR_END#]

[##_1C|627285.zip|| 다운로드 받으시려면 클릭! _##]

PS// 매번 자바스크립트 만들때마다 브라우저 호환성을 같이 적었는데, 이제 귀찮네요... -_-;;
앞으로 별다른 설명이 없다면 그냥 최신의 {모질라 계열, 오페라, IE} 에서는 다 된다고 생각해주세요.

    • seyool
    • October 19th, 2004 5:19am

    멋집니다.
    만들수는없지만 느낄수는 있네요.. ^^

  1. 김기남 // wma, pdf 나 이미지 등 브라우저에서 바로 보여지도록 설정되어있는 파일들은 따로 download 할 수 있는 프로그램과 함께 사용하시는 것이 좋습니다.

    http://phpschool.com/bbs2/inc_view.html?id=10187&code=tnt2
    이 글을 참고해보시면 어떨까요

    • 김기남
    • October 16th, 2004 12:40am

    질문드릴께요 ..소스 감사해요
    그런데요. wma 파일들은 다운이 안되고 미디어 플레이어가 열리는데
    음악파일도 다운 받을수 있게는 안될까요.

  2. lovejin // 다 확인해봤는데, Window2000 Pro SP4, IE6 SP1, Firefox 1.0PR 에선 잘되고 오페라 웹브라우저에서만 안되는군요. 안되는 환경을 말씀해주실 수 있을까요?

  3. 고니님..지금 트래백 확인해보세요…(^^)

  4. lovejin // 안될리가 없을텐데요….?
    그 새창으로 만들었다는 부분의 HTML 소스를 보내주실 수 있으시다면 보고 분석해보도록 하겠습니다. :)

  5. 좋은 소스 감사합니다…
    문제점이 있어 이럭게 글을 올립니다..
    위 예제처럼 현 페이지에서 선택 다운로드하면 잘 됩니다..
    그런데..팝업으로 띄운창에서는 안되네요…뭐가 문제인지..

    예를들어 게시판을 생각해보면..리스트에서 첨부파일이 있을경우 글머리에 클립이나 파일이미지로 표시를 합니다.. 그 표시된 이미지를 클릭하면 팝업으로 뜨면서 첨부된 파일을 자동으로 다운받을려구 하거든요…그런데..안되네요..
    그래서 이미지를 클릭했을때 location으로 처리를 해보았는데..이건 잘되구요…
    위 코드가 새창에서는 안되는것인가요…

    • 굿
    • October 7th, 2004 10:54am

    잘 보고 갑니다…^^ 수고 하세요..

    • riggs
    • October 7th, 2004 10:31am

    스쿨에서 보고 왔습니다.

    좋은 팁 감사해요~! ^^*

  1. October 14th, 2004
  2. October 21st, 2004
    Trackback from : 작은가을