1

フォームに画像を追加する方法を探していたところ、これらのコードが見つかりました。このコードを統合しているときに、フォームの送信時に投稿されるフォームに他のフィールドがあるため、失敗しました。

たとえば、ファイルと一緒にフィールドLastnameを投稿し、同じサーブレットを使用してそれを取得する方法(サーブレット内のコードのブロックで姓を取得する方法)を示すのを手伝っていただけませんか。

4

2 に答える 2

2

Apache Commons FileUploadServlet 3.0を混在させています@MultipartConfig。これら 2 つは、multipart/form-dataリクエストを解析するためのまったく異なる方法です。HTTP 要求は 1 回だけ解析できます。したがって、これらの 2 つの方法のいずれかが事前に解析済みである場合、もう一方の方法はそれを解析できなくなり、null/空のデータになってしまいます。

両方の方法ではなく、いずれかの方法でリクエストを解析する必要があります。multipart/form-dataApache Commons FileUpload は、サーブレット 3.0 が導入される (2009 年 12 月) 以前は、リクエストを解析するための「事実上の」標準でした。しかし、サーブレット 3.0 以降、Apache Commons FileUpload を不要にする新しい@MultipartConfigアノテーションと新しいメソッドがあります。request.getPart()

Apache Commons FileUpload を使用する場合は、Servlet 3.0とすべての行を削除し、代わりに から「通常の」リクエスト パラメータを抽出する必要があります。@MultipartConfigrequest.getParameter()List items

Servlet 3.0 を使用する@MultipartConfig場合は、Apache Commons FileUpload に関連するすべてのコードを削除request.getPart()し、代わりにアップロードされたファイルを取得するために使用する必要があります。

以下も参照してください。

于 2012-08-09T14:21:13.147 に答える
0

質問は少し紛らわしいですが、サーブレットで apache commons fileupload ライブラリを使用し、このようなことを行って画像ファイルのアップロードを取得します。

            DiskFileItemFactory  fileItemFactory = new DiskFileItemFactory ();


        ServletFileUpload uploadHandler = new ServletFileUpload(fileItemFactory);
        try {
            /*
             * Parse the request
             */
            List items = uploadHandler.parseRequest(request);
            Iterator itr = items.iterator();
            while(itr.hasNext()) {
                FileItem item = (FileItem) itr.next();
                /*
                 * Handle Form Fields.
                 */
                if(item.isFormField()) {
                    //do stuff here if the item currently is not a file upload
                } 
                                else {
              //DO stuff here to handle the file upload 
                                 }
于 2012-08-09T13:54:28.050 に答える