2011-07-04 8 views
1

任意の量のファイルアップロードを可能にするファイルアップロードページを作成しようとしています。私はクリックしたときに新しいファイル入力フィールドをフォームに作成する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です。

私には何が欠けていますか?どんな助けでも大歓迎です。

+2

:あなたのCGIによると、このする必要があります

input.setAttribute("name", 'fileName_' + i);

、それはfileName_2と呼ばれています – James

答えて

2

あなたは間違って動的なファイルフィールドを命名しました:あなたはfile_2という入力要素を持っていない

input.setAttribute("name", 'file_' + i);

+0

ありがとうございます。 –

1

firebugでデバッグを試してください。実際に何が送信され、どのようにHTMLフォームがリアルタイムで構築されるかを確認します。

+0

私は火かき棒を見て、非常に役に立つ音。おかげで –

+0

おそらくWeb開発のための最も有用なツール。 – Variant

関連する問題