Я пытаюсь создать страницу загрузки файлов, которая позволяет произвольно загружать файлы.Я нашел код javascript, который успешно создает новое поле ввода файла в форме при щелчке по нему, однако любые поля, кроме жестко запрограммированного в html, не отправляются в мой Perl CGI-скрипт.
Javascript
function fileFields() {
var x = document.getElementById('fileUpload');
x.onclick = function() {
var i = parseFloat(this.lastChild.id)+1;
input = document.createElement("input");
input.setAttribute("type", "file");
input.setAttribute("name", 'fileName_' + i);
input.setAttribute("id", i);
this.appendChild(input);
}
}
function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
if (oldonload) {
oldonload();
}
func();
}
}
}
addLoadEvent(function() {
fileFields();
});
HTML-форма
<form action="https://www.indiana.edu/~webdeviu/phil/submit.cgi" method="post" enctype="multipart/form-data">
<select name="property">
<TMPL_LOOP NAME="PROPS">
<option value="<TMPL_VAR NAME="user">"><TMPL_VAR NAME="user"></option>
</TMPL_LOOP>
</select>
<br />
<a href="#" id="fileUpload"><input type="file" name="file_1" id="1" /></a>
<br />
<input type="submit" name="submit" value="Upload" />
</form>
Perl CGI, часть, которая ищет несколько файлов
my @files;
my $i = 1;
my $file = $query->param("file_" . $i);
while ($file) {
push(@files, $file);
$i = $i + 1;
$file = $query->param("file_" . $i);
}
print $query->header( );
print scalar(@files); # prints 1 regardless of how many files I upload
exit;
В одной точке я также поместил escape-цикл для вывода на печать$ file, если он заменен на «file_2», и в этот момент он пуст.
Чего мне не хватает?Буду признателен за любую оказанную помощь.