任意の量のファイルアップロードを可能にするファイルアップロードページを作成しようとしています。私はクリックしたときに新しいファイル入力フィールドをフォームに作成するjavascriptコードを見つけましたが、htmlでハードコードされたフィールド以外のフィールドは私のperl CGIスクリプトに送られていません。動的フォームフィールドが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>
私はまた、1つの時点でwhileループで脱出を入れ
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;
複数のファイルを探しますPerlのCGI、部分$ fileを "file_2"に変更すると$ fileを出力し、その時点ではnullです。
私には何が欠けていますか?どんな助けでも大歓迎です。
:あなたのCGIによると、このする必要があります
input.setAttribute("name", 'fileName_' + i);
、それはfileName_2と呼ばれています – James