1

コードで奇妙な問題に直面しています。ファイルをアップロードできるように、クラスを使用しorg.apache.http.entity.mime.MultipartEntityてファイルエンティティをサーバーに送信しています。しかし、別のエンティティ/パラメーターを追加しようとすると、その値を .xml で取得できませんでしたHttpServletRequest。以下は、成功したファイルアップロードリクエストを送信しているクライアント側の作業コードです。

public class TestClass 
{
    public static void main(String args[]) throws ConfigurationException, ParseException, ClientProtocolException, IOException
    {
        HttpClient client = new DefaultHttpClient();
        client.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);     
        HttpPost    post   = new HttpPost("http://localhost:9090/HostImages/ImageUploaderServlet");
        MultipartEntity entity = new MultipartEntity( HttpMultipartMode.BROWSER_COMPATIBLE );
        entity.addPart( "file", new FileBody(new File("D:/tempImage/cat_image.jpg") ));
        post.setEntity(entity);
        String response = EntityUtils.toString( client.execute( post ).getEntity(), "UTF-8" );
        client.getConnectionManager().shutdown();
    }
}

サーバー側、つまり内部では、次のようにオブジェクトをImageUploaderServlet解析していました。requestHttpServletRequest

FileItemFactory fileItemFactory = new DiskFileItemFactory();
ServletFileUpload servletFileUpload = new ServletFileUpload(fileItemFactory); List fileItems = servletFileUpload.parseRequest(request);
そして、クライアント側から送信されたファイルのリストが表示され、それらは完全に正常に機能します。

MultipartEntityを使用して別のエンティティを追加しようとしている場合、またはHttpParamsサーバー側でその値を取得できない場合に問題が発生します。私はすでに投稿されたこの質問を調べましたが、助けにはなりません。StringBody(以下 のように別のエンティティを追加しようとしました:)

entity.addPart("flag", new StringBody("true"));

サーバー側でそれを使用して目的を達成できるように、クライアント側にいくつかの追加パラメーターを追加したいと考えています。追加のパラメーターは、String、int、または byte のいずれかです。クライアント側またはサーバー側の正確な問題がどこにあるのかわかりません! 親切に助けてください。

4

1 に答える 1