2012-01-29 6 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); 
    } 
} 
} 

и соответствующий 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

при объявлении

ifrm = document.createElement("IFRAME"); 

внутри функции, вы создаете глобальный объект. следовательно, каждый раз, когда вызывается makeframe(), вы уничтожаете предыдущий iframe. Try:

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

Спасибо за ответ, он все еще не работает, хотя –

+0

в чем же проблема? нет iframe загружен? единственный? –

+0

Когда я нажимаю кнопку загрузки, он ничего не делает. Проводник, кажется, загружается в течение секунды секунды, а затем останавливается. Нет подсказки загрузки для одного или нескольких выборов. –

0

Ваш код IFrame правильно и должно работать. Однако в вашей программе downloadChecked вы добавляете foo.name в качестве атрибута строки запроса файла, который с вашей текущей разметкой приведет к « fileid = file». Предполагая, что вы храните файл для строки запроса в атрибуте значения ввода, вы можете изменить «foo.name» на «foo.value»

+0

Да, вы правы с этим, и хотя я теперь изменил его на .value, я все еще не получаю никакой подсказки/сообщения для загрузки, и ничего похожего не происходит –