アップロードされたファイルと同じ入力タイプと名前の複数フォーム フィールド値を解析したいのですが、私の設計では、Java スクリプトを使用して複数ファイル アップロード フィールドと、ユーザーがファイルの説明を入力できるようにするテキスト フィールドを生成しています。ユーザーは好きなだけフィールドを添付できます。
HTML 要素を作成するための Java スクリプト
var d = document.createElement("div");
var file1 = document.createElement("input");
file1.setAttribute("type", "text");
file1.setAttribute("name", "fileName"+upload_number);
d.appendChild(file1);
var file = document.createElement("input");
file.setAttribute("type", "file");
file.setAttribute("name", "attachment"+upload_number);
d.appendChild(file);
document.getElementById("moreUploads").appendChild(d);
upload_number++;
対応する HTML
<input type="file" name="attachment" id="attachment" onchange="document.getElementById('moreUploadsLink').style.display = 'block';"/>
<div id="moreUploads"></div>
<div id="moreUploadsLink" style="display:none;">
<a href="javascript:addFileInput();">Attach another File</a>
</div>
私のJavaスクリプトがどのように機能するかを確認してください: http://jsfiddle.net/8k926/90/
私のファイルアップロードサーブレットで、デバッグしようとしましたが、最初に生成された値のみを解析していました.javascriptによって発生した次の生成されたフィールドを解析していません.
私のファイルアップロードサーブレット
if(item.isFormField())
{
String name = item.getFieldName();
if(name != null)
{
if(name.equals("fileName"))
{
fileName = item.getString();
}
else if(name.equals("main"))
{
main = item.getString();
}
else if(name.equals("sub"))
{
sub=item.getString();
}
else if(name.equals("filetype"))
{
filetype=item.getString();
}
}
}else{
String file1=item.getFieldName();
String file2=item.getName();
filen=file2;
ocation = File.separator+"home"+File.separator+"adapco"+File.separator+"Desktop"+ File.separator +"output"+ File.separator +main+File.separator+sub+File.separator+filen;
uploadFile = new File(location);
//code for connecting and inserting the form field values into the database.
}
単一のファイルをアップロードした後、デバッガーが終了しています。