この記事は、説明するために2つの側面に分かれています。
1. Javaは、複数のファイルの動的アップロードを実装します
2.ファイルの名前変更問題Javaを解く
参照のために、特定のコンテンツは次のとおりです
1.複数のファイルを動的にアップロードします
<form name = "xx" action = "<c:url value = '/up3servlet' //>" method = "post" enctype = "multipart/form-data"> <table id = "tb"> <tr> <td> file:</td> <td> <入力タイプ= "ファイル"ファイル "ファイル"ファイル "> </tr> </table> <br/> <入力型= "button" onclick = "_ submit();" value = "upload"> <入力onclick = "_ add();" type = "button" value = "add"> </form> </body> <script type = "text/javascript"> function _add(){var tb = document.getElementbyId( "tb"); //ラインを書きますvar tr = tb.insertrow(); //列var td = tr.insertcell(); //データを書き込むtd.innerhtml = "file:"; //新しいTDを宣言しますvar td2 = tr.insertcell(); //入力を書き込みますtd2.innerhtml = '<input type = "file" name = "file"/> <button onclick = "_ del(this);"> delete </button>'; } function _del(btn){var tr = btn.parentnode.parentnode; //alert(tr.tagname); //テーブルでtrの添え字を取得var var index = tr.RowIndex; // delete var tb = document.getElementById( "tb"); tb.deleterow(index); } function _submit(){//すべてのファイルvar files = document.getelementsbyname( "file"); if(files.length == 0){alert( "アップロードできるファイルなし"); falseを返します。 } for(var i = 0; i <files.length; i ++){if(files [i] .value == ""){alert( ""+(i+1)+"ファイルは空にすることはできません"); falseを返します。 }} document.forms ['xx']。submit(); } </script> </html>すべてのファイルを繰り返してアップロードします
2。ファイル名の重複の問題を解決します
パッケージcn.hx.servlet; Import java.io.file; import java.io.io.ioexception; import java.io.printwriter; import java.util.arraylist; import java.util.uuid; import javax.servlet.servletexteccepti javax.servlet.http.httpservletrequest; import javax.servlet.httpservletresponse; Import org.apache.commons.fileupload.fileitem; Import org.apache.commons.fileupload.disk.diskfiletemfactory; org.apache.commons.servlet.servletfileupload; Import org.apache.commons.io.fileutils; public class upimgservletはhttpservlet {httpservletrequest request、httpservletressponsexception excection {httpsersporsexconse respects(httpservletrequest request)を拡張します。 request.setcharacterencoding( "utf-8"); string path = getServletContext()。getRealPath( "/up"); DiskFileItemFactory Disk = new DiskFileItemFactory(1024*10、new File( "d:/a")); servletfileupload up = new servletfileupload(disk); try {list <fileitem> list = up.parserequest(request); //画像のみを受け取ります*.jpg-iamge/jpege。、bmp/imge/bmp、png、list <string> imgs = new arraylist <string>(); for(fileItem file:list){if(file.getContentType()。contains( "image/")){string filename = file.getName(); filename = filename.substring(filename.lastindexof( "//")+1); //拡張文字列extname = filename.substring(filename.lastindexof( "。"));//。jpg// uuid string uuid = uuid.randomuid()。toString()。置換( " - "、 ""); //新しい名前文字列newname = uuid+extname; // uuidは新しいフォルダー名を生成するために使用されるため、複製名はfileutils.copyinputStreamTofile(file.getInputStream()、new file(path+"/"+newName))を引き起こさないようにします。 // imgs.add(newname)をリストに置く; } file.delete(); } request.setAttribute( "IMGS"、IMGS); request.getRequestDispatcher( "/jsps/imgs.jsp")。 } catch(Exception e){e.printstacktrace(); }}}上記は、ファイルの複製名の問題を解決するJavaマルチファイルアップロードを実装しています。みんなの学習に役立つことを願っています。