2012-01-29 4 views
0

사용자가 다운로드 할 수있는 문서에 링크 된 체크 상자가 있습니다. 나는 여기에 도착한 일부 코드를 해킹했다.체크 박스를 기반으로 한 파일 다운로드

지금까지 downloadChecked 함수가 의도 한대로 작동하지만 makFrame 함수가 제대로 실행되지 않는 것 같습니다. 지금은 아무 것도하지 않는 것 같습니다.

function makeFrame(url) 
{ 
ifrm = document.createElement("IFRAME"); 
ifrm.setAttribute("style", "display:none;") ; 
ifrm.setAttribute("src", url) ; 
ifrm.style.width = 0+"px"; 
ifrm.style.height = 0+"px"; 
document.body.appendChild(ifrm) ; 
} 

function downloadChecked() 
{ 
for(i = 0 ; i < document.downloadform.elements.length ; i++) 
{ 
    foo = document.downloadform.elements[ i ] ; 
    if(foo.type == "checkbox" && foo.checked == true) 
    { 
    makeFrame('somefile.do?command=download&fileid=' + foo.name); 
    } 
} 
} 

하고 함수 내에서

ifrm = document.createElement("IFRAME"); 

를 선언 해당 HTML

<form name="downloadform"> 
<input type="checkbox" name="file" id="file1"  
value="file source etc" /> 

<input type="checkbox" name="file" id="file2"  
value="file source etc" /> 

<input type="button" value="Download all" onClick="downloadChecked();" /> 
+0

오류가 있는지 개발자/디버깅 도구를 확인하십시오. 그것은 우리가 당신의 기능이 실패한 시점을 결정하는 데 도움이 될 것입니다. Firefox를 사용하는 경우 [Firebug] (http://getfirebug.com/)를 사용하는 것이 좋습니다. IE9 +를 포함한 모든 최근 시장 브라우저에는 개발자 도구가 내장되어 있습니다. – Kiruse

+0

다운로드 처리기 "somefile.do"가 파일의 적절한 헤더를 설정합니까? – Michal

답변

0

, 당신은 전역 개체를 만들 수 있습니다. 따라서 makeframe()이 호출 될 때마다 이전 iframe을 파기합니다. 시도해보기 :

var ifrm = document.createElement("IFRAME"); 
+0

응답 해 주셔서 감사합니다. 그래도 문제가있는 것은 무엇입니까? –

+0

정확히 무엇이 문제입니까? iframe이로드되지 않았습니까? 단 하나? –

+0

다운로드 버튼을 누르면 아무런 변화가 없습니다. 탐색기가 두 번째로로드 된 다음 중지됩니다. 하나 또는 여러 개의 선택에 대한 다운로드 프롬프트가 표시되지 않습니다. –

0

iframe 코드가 정확하며 올바르게 작동해야합니다. 그러나 downloadChecked 함수에서 현재 마크 업으로 "& fileid = file"이되는 fileid 쿼리 문자열 특성으로 foo.name을 추가합니다. 입력 문자열의 fileid를 입력 값 속성에 저장한다고 가정하면 "foo.name"을 "foo.value"로 변경하려고 할 수 있습니다.

+0

예, 맞습니다. 지금은 변경했습니다. .value, 나는 여전히 어떤 다운로드 프롬프트/메시지를 얻지 못하고 있으며 아무 것도 일어나지 않는 것 같습니다. –

관련 문제