サーブレットで画像の配列を取得するにはどうすればよいですか?

MMMMS

以下のコードのような単一のアップロードボタンを使用して、より多くの画像をアップロードしています。

回答に基づいて更新:

 package TeachChapter;

import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.sql.*;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
/**
 * Servlet implementation class ImageUploadToDB
 */
@WebServlet("/ImageUploadToDB")
public class ImageUploadToDB extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public ImageUploadToDB() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println("Entered successfully:");
        final FileItemFactory factory = new DiskFileItemFactory();
        final ServletFileUpload fileUpload = new ServletFileUpload(factory);
        List items = null;
         Map<String, InputStream> fileMap = new HashMap<String, InputStream>();

        if (ServletFileUpload.isMultipartContent(request)) {

            // get the request content and iterate through
            try {
                items = fileUpload.parseRequest(request);
            } catch (FileUploadException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            if (items != null) {
                System.out.println("if0 successfully:");
                final Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    System.out.println("while successfully:");
                    final FileItem item = (FileItem) iter.next();
                    // this is for non-file fields
                    if (item.isFormField()) {
                        System.out.println("if1 successfully:");
                    // logic for setting non-file fields
                    } else {
                        // item.getName() - gives file name
                        fileMap.put(item.getName(), item.getInputStream());
                        System.out.println("else successfully:");
                    }
                }
            }
        }


        try {
            System.out.println("try connection successfully:");

        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        Connection con;
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root","");

        Set<String> keySet = fileMap.keySet();
        for (String fileName : keySet) {
            System.out.println("for successfully:");
        String sql ="INSERT INTO contacts (first_name, last_name, photo) values (?, ?, ?)" ; 
        PreparedStatement statement;

            statement = con.prepareStatement(sql);

             statement.setString(1, "mani");  
             statement.setString(2, "vasu"); 

            statement.setBlob(3, fileMap.get(fileName));


            int row = statement.executeUpdate();
            System.out.println("inserted successfully:");
        }
        }
         catch (SQLException e) {
            // TODO Auto-generated catch block
            System.out.println("errror is:"+e);
        }  



    }
}

オン:

Entered successfully:
try connection successfully:

私は上記のコードが完全に間違っていることを知っていますが、mysqlに挿入するためにサーブレットページにアップロードされたすべての画像を取得したいと思います。

私を助けてください。

プラモッドカランディカル

同様の問題に直面していました-おそらくあなたはそれをさらに発展させることができます。

これは一般的な解決策です。入力リクエストの添付ファイルの数がわかりません。以下のようなマルチパートリクエストに対応します。

// imports
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;

// code flow
// HttpServletRequest request
final FileItemFactory factory = new DiskFileItemFactory();
final ServletFileUpload fileUpload = new ServletFileUpload(factory);
List items = null;
private Map<String, InputStream> fileMap = new HashMap<String, InputStream>();

if (ServletFileUpload.isMultipartContent(request)) {

    // get the request content and iterate through
    items = fileUpload.parseRequest(request);

    if (items != null) {
        final Iterator iter = items.iterator();
        while (iter.hasNext()) {
            final FileItem item = (FileItem) iter.next();
            // this is for non-file fields
            if (item.isFormField()) {

            // logic for setting non-file fields
            } else {
                // item.getName() - gives file name
                fileMap.put(item.getName(), item.getInputStream());
            }
        }
    }
}

//Here i will insert that images on by one to DB
Connection con =DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5","root","");

Set<String> keySet = fileMap.keySet();
for (String fileName : keySet) {

String sql = "INSERT INTO contacts (photo) values (?)";  
PreparedStatement statement = con.prepareStatement(sql);  
statement.setBlob(1, fileMap.get(fileName));  
int row = statement.executeUpdate();  
}

fileMap リクエストで送信したすべてのファイルが含まれます。

ファイル名を気にしない場合は、実装をからHashMapArrayList変更し、for loopそれに応じて変更することができます

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

サーブレット全体の接続を取得するにはどうすればよいですか?

分類Dev

Firebaseストレージから画像の配列を作成するにはどうすればよいですか?

分類Dev

Postgresで配列のサブセットを選択するにはどうすればよいですか?

分類Dev

その列の値またはサブ配列を含むすべてのレコードを取得するにはどうすればよいですか?

分類Dev

画像の配列をマッピングするブートストラップグリッドを使用するにはどうすればよいですか?

分類Dev

画像から16進コードの配列を取得するにはどうすればよいですか?

分類Dev

サーブレットで投稿された文字列配列を処理するにはどうすればよいですか?

分類Dev

サーブレットで投稿された文字列配列を処理するにはどうすればよいですか?

分類Dev

オブジェクトの配列からキーとサブキーを取得するにはどうすればよいですか?

分類Dev

ある配列のサブ配列を別の配列のサブ配列に同期的にネストするにはどうすればよいですか?

分類Dev

Rubyで配列の共通部分、和集合、サブセットを取得するにはどうすればよいですか?

分類Dev

gson / retrofitでオブジェクトの配列を取得するにはどうすればよいですか?

分類Dev

PHPで配列オブジェクトの値を取得するにはどうすればよいですか?

分類Dev

mongoDBで一致するすべてのサブ配列オブジェクトを取得するにはどうすればよいですか?

分類Dev

Godot-Gdscriptでリストのサブ配列を作成するにはどうすればよいですか?

分類Dev

Meteorテンプレートの各ループで配列のインデックスを取得するにはどうすればよいですか?

分類Dev

配列からオブジェクトの値を取得するにはどうすればよいですか?

分類Dev

サーブレットのホスト名(およびポート)を取得するにはどうすればよいですか

分類Dev

Sparkの配列列からフィールドのサブセットを選択するにはどうすればよいですか?

分類Dev

配列からレコードの値を取得するにはどうすればよいですか?

分類Dev

Javaサーブレットのマルチパートフォームから入力を取得するにはどうすればよいですか?

分類Dev

AS3のバイト配列からGIF画像サイズの寸法を取得するにはどうすればよいですか?

分類Dev

Ratpackハンドラーでサーブレットフィルター(前/後)の動作を取得するにはどうすればよいですか?

分類Dev

pandasデータフレームのグループから行のサブセットを取得するにはどうすればよいですか?

分類Dev

ブレードテンプレートの配列のサイズを知るにはどうすればよいですか?

分類Dev

配列内のオブジェクトを取得するにはどうすればよいですか?

分類Dev

HTMLからElementsByClassNameを取得してJavaScript配列にプッシュするにはどうすればよいですか? このアレイにアラートを送信するにはどうすればよいですか?

分類Dev

matplotlibで複数のサブプロットを取得するにはどうすればよいですか?

分類Dev

Firebase Androidでデータの配列リストを取得するにはどうすればよいですか?

Related 関連記事

  1. 1

    サーブレット全体の接続を取得するにはどうすればよいですか?

  2. 2

    Firebaseストレージから画像の配列を作成するにはどうすればよいですか?

  3. 3

    Postgresで配列のサブセットを選択するにはどうすればよいですか?

  4. 4

    その列の値またはサブ配列を含むすべてのレコードを取得するにはどうすればよいですか?

  5. 5

    画像の配列をマッピングするブートストラップグリッドを使用するにはどうすればよいですか?

  6. 6

    画像から16進コードの配列を取得するにはどうすればよいですか?

  7. 7

    サーブレットで投稿された文字列配列を処理するにはどうすればよいですか?

  8. 8

    サーブレットで投稿された文字列配列を処理するにはどうすればよいですか?

  9. 9

    オブジェクトの配列からキーとサブキーを取得するにはどうすればよいですか?

  10. 10

    ある配列のサブ配列を別の配列のサブ配列に同期的にネストするにはどうすればよいですか?

  11. 11

    Rubyで配列の共通部分、和集合、サブセットを取得するにはどうすればよいですか?

  12. 12

    gson / retrofitでオブジェクトの配列を取得するにはどうすればよいですか?

  13. 13

    PHPで配列オブジェクトの値を取得するにはどうすればよいですか?

  14. 14

    mongoDBで一致するすべてのサブ配列オブジェクトを取得するにはどうすればよいですか?

  15. 15

    Godot-Gdscriptでリストのサブ配列を作成するにはどうすればよいですか?

  16. 16

    Meteorテンプレートの各ループで配列のインデックスを取得するにはどうすればよいですか?

  17. 17

    配列からオブジェクトの値を取得するにはどうすればよいですか?

  18. 18

    サーブレットのホスト名(およびポート)を取得するにはどうすればよいですか

  19. 19

    Sparkの配列列からフィールドのサブセットを選択するにはどうすればよいですか?

  20. 20

    配列からレコードの値を取得するにはどうすればよいですか?

  21. 21

    Javaサーブレットのマルチパートフォームから入力を取得するにはどうすればよいですか?

  22. 22

    AS3のバイト配列からGIF画像サイズの寸法を取得するにはどうすればよいですか?

  23. 23

    Ratpackハンドラーでサーブレットフィルター(前/後)の動作を取得するにはどうすればよいですか?

  24. 24

    pandasデータフレームのグループから行のサブセットを取得するにはどうすればよいですか?

  25. 25

    ブレードテンプレートの配列のサイズを知るにはどうすればよいですか?

  26. 26

    配列内のオブジェクトを取得するにはどうすればよいですか?

  27. 27

    HTMLからElementsByClassNameを取得してJavaScript配列にプッシュするにはどうすればよいですか? このアレイにアラートを送信するにはどうすればよいですか?

  28. 28

    matplotlibで複数のサブプロットを取得するにはどうすればよいですか?

  29. 29

    Firebase Androidでデータの配列リストを取得するにはどうすればよいですか?

ホットタグ

アーカイブ