ファイルのアップロードは、Webサイト上の非常に一般的な機能です。サーブレットを使用してリクエストパラメーターを直接解析して、アップロードされたファイルを取得する必要があります。これは非常に面倒です。したがって、通常、Apache Open Source Tool、Common-Fileuploadを使用することを選択します。このJARパッケージは、Apacheの公式Webサイト、またはStrutsのLibフォルダーの下にあります。 Strutsアップロードの機能は、この実装に基づいています。
Common-FileuploadはCommon-IOパッケージに依存するため、このパッケージもダウンロードする必要があります。次に、プロジェクトパスの下にインポートします。
次のようにコードを使用します
パッケージoop.hg.ytu.servlet; java.io.fileをインポートします。 java.io.ioexceptionをインポートします。 java.io.inputStreamをインポートします。 java.util.listをインポートします。 javax.servlet.servletexceptionをインポートします。 javax.servlet.http.httpservletをインポートします。 javax.servlet.http.httpservletrequestをインポートします。 javax.servlet.http.httpservletResponseをインポートします。 op.hu.ytu.dao.uploaddomainをインポートします。 org.apache.commons.fileupload.fileitemをインポートします。 org.apache.commons.fileupload.disk.diskfileitemfactoryをインポートします。 Import org.apache.commons.fileupload.servlet.servletfileupload;パブリッククラスのアップロードhttpservlet { / ***ユーザーアップロードリクエストを処理* /プライベートstatic final long serialversionuid = 1l; public void doget(httpservletrequest request、httpservletresponse応答)servletexception、ioexception {// string describe = request.getparameter( "describe"); DiskFileItemFactory Factory = new DiskFileItemFactory(); @suppresswarnings( "deprecation")文字列パス= request.getRealPath( "/upload"); Factory.SetsizethReshold(1024*1024); // Create BufferサイズServletFileupload upload = new ServletFileupload(Factory); upload.setsizemax(-1); // uploadファイル制限サイズを設定します、-1無制限のtry {@suppresswarnings( "unchecked")list <fileitem> list = upload.parserequest(request);文字列va = null; for(fileitem item:list){// string name = item.getFieldName(); if(item.isformfield()){//それがファイルストリームva = item.getString( "utf-8")であるかどうかを判断します。 // system.out.println(name+"="+va); /// request.setattribute(name、value); } else {string value = item.getName(); //フルパス名int start = value.lastindexof( "//");文字列filename = value.substring(start+1); // request.setattribute(name、filename); inputstream in = item.getInputStream(); uploaddomain dao = new uploaddomain(); //item.write(new file(realpath、filename)); int index = filename.lastindexof( "。"); String RealfileName = filename.Substring(0、index);文字列型= filename.substring(index+1); dao.insert(in、realfilename、type、va); //データベースに入れます}}} catch(Exception e){e.printstacktrace(); }} public void dopost(httpservletrequest request、httpservletResponse応答)servletexception、ioexception {doget(request、response); }}ここでは、テキストボックスに情報を送信してからデータベースに挿入するなど、アップロードされたストリームまたはフォームのパラメーターであるかどうかを決定します。データベース挿入コードは次のとおりです
パッケージoop.hu.ytu.dao; java.io.inputStreamをインポートします。 Java.sql.Connectionをインポートします。 Java.sql.preparedStatementをインポートします。 java.sql.resultsetをインポートします。 oop.hg.ytu.utils.jdbcutilsをインポートします。 /*** uploadサポートの提供* @Author Administrator**/public class uploaddomain {/***アップロードされたファイルをデータベースに配置します*/public void insert(inputstream in、string filename、string type、string describle)throws excement {//データベース接続conn = null; represedStatement PS = null;結果rs = null; System.out.println(destrible); try {// 2。接続を確立しますconn = jdbcutils.getConnection(); //3。ステートメント文字列sql = "fileupload(file、filename、type、des)values(?、?、?、?)"に挿入insertingを作成します。 ps = conn.preparestatement(sql); ps.setblob(1、in); ps.setString(2、filename); ps.setString(3、type); ps.setString(4、説明); // 4。ステートメントを実行するps.executeUpdate(); in.close(); }最後に{jdbcutils.free(rs、ps、conn); }}}デフォルトのデータベース価格の質問サイズの制限に遭遇する場合があります。 mysqlインストールディレクトリの下のmy.iniの下の次の構成を変更する必要があります。
[mysqld]
max_allowed_packet = 64m
それだけです。もちろん、エンコード形式に注意してください。ファイルをアップロードして完了します。もう1つのことは、私の列名の1つが説明するように設定されていることであり、その結果、MySQLの予約単語と矛盾しており、情報を挿入できないことです。将来は注意を払わなければなりません。
上記はこの記事のすべての内容です。みんなの学習に役立つことを願っています。誰もがwulin.comをもっとサポートすることを願っています。