ファイルのアップロードは、Webアプリケーションで非常に一般的です。 Java Web環境にファイルアップロード機能を実装するのは非常に簡単です。これは、インターネット上のファイルアップロードのためにJavaで開発された多くのコンポーネントがすでに開発されているためです。この記事では、Java Webアプリケーションにファイルアップロード機能を追加する方法を示すための例として、最もCommons-Fileuploadコンポーネントを使用しています。
Commons-Fileuploadコンポーネントは、Apacheのオープンソースプロジェクトの1つであり、http://commons.apache.org/fileupload/からダウンロードできます。このコンポーネントはシンプルで使いやすいため、一度に1つ以上のファイルをアップロードしてファイルサイズを制限できます。
ダウンロードした後、zipパッケージを解凍して、Commons-fileupload-1.x.jarをTomcatのWebApps/Your webApp/web-inf/lib/にコピーしてください。ディレクトリが存在しない場合は、独自のディレクトリを作成してください。
ファイルアップロードのために新しいuploadservlet.javaを作成します。
パッケージcom.liaoxuefeng.web; public class fileuploadservletはhttpservletを拡張します{private string uploaddir = "c:// temp"; @Override Protected void dopost(httpservletrequest req、httpservletresponse rep)servletexception、ioexception {// todo:}}}サーブレットがブラウザによって発行されたPOSTリクエストを受信すると、doPost()メソッドにファイルアップロードを実装します。 fileItemiteratorをトラバースし、各fileitemStreamを取得する必要があります。
@OverrideProtected void dopost(httpservletrequest req、httpservletresponse rep)servletexception、ioexception {try {servletfileupload upload = new servletfileupload(); //最大ファイルサイズを1 MBに設定します:upload.setFilesizeMax(1024 * 1024); fileitemiterator it = upload.getItemiterator(req); //各ファイルでハンドル:while(it.hasnext()){fileitemstream item = it.next(); if(!item.isformfield()){//ファイルアップロード:handleFileItem(item); }} req.getRequestDispatcher( "success.jsp")。フォワード(req、rep); } catch(fileuploadexception e){throw new Servletexception( "file。"、 "、e); }}handleFileItem()メソッドのアップロードされたファイルの入力ストリームを読み取り、それをuploaddirに書き込み、ファイル名はuuidによってランダムに生成されます。
void handleFileItem(fileItemstream item)はioexception {system.out.println( "upload file:" + item.getName());ファイルnewuploadfile = new File(uploadDir + "/" + uuid.randomuuid()。toString()); byte [] buffer = new byte [4096]; inputstream input = null; outputStream output = null; try {input = item.openstream(); output = new BufferedOutputStream(new fileoutputStream(newuploadfile)); for(;;){int n = input.read(buffer); if(n ==(-1))break; output.write(buffer、0、n); }}最後に{if(input!= null){try {input.close(); } catch(ioException e){}}}Web.xml構成ファイルの指定されたアップロードフォルダーを読みたい場合は、init()メソッドで初期化できます。
@overridepublic void init(servletconfig config)servletexception {super.init(config); this.uploaddir = config.getInitParameter( "dir");}最後に、web.xmlでサーブレットを構成します:
<?xml version = "1.0" encoding = "utf-8"?> <!doctype web-app public " - // sun microsystems、inc .//dtd webアプリケーション2.3 // en" "http://java.sun.com/dtd/web-app_2_3.dtd" <サーブレットクラス> com.liaoxuefeng.web.fileuploadservlet </servlet-class> </servlet-mapping> <servlet-name> uploadservlet </servlet-name> <url-pattern>/upload </url-pattern> </servlet-mapping> </web-app>
サーブレットを構成した後、Tomcatまたは樹脂を開始し、簡単なindex.htmテストを書き込みます。
<html> <body> <p> fileuploadservlet demo </p> <form name = "form1" action = "upload" method = "post" enctype = "multipart/form-data"> <入力タイプ= "ファイル"ファイル "ファイル"ファイル "ファイル"/> <入力タイプ= "" name = "submit"/form> </form>
Action = "Upload"は、アップロードされたファイルを処理するFileuploAdServletのマッピングURLを指定することに注意してください。
アップロードが成功すると、success.jspが表示されます。それ以外の場合は、例外がスローされます。アップロードされたファイルサイズが設定された1MBを超えると、Filesizelimitex CehcededExceptionが取得されます。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。