0

HTTPリクエストを使用して、あるサーバーから別のサーバーにデータを送信するアプリケーションに取り組んでいます。文字列に対してはすべて問題なく動作しますが、ファイルを送信する方法がわかりません(あるサーバーから別のサーバーへのファイルのアップロード)。

いくつかの例を見てきましたが、ファイルと一緒に文字列(ファイルID)を送信できる必要もあります。

リクエストは、そのクラスのPOSTメソッドのJavaクラスから送信されます。これは次のようなものです。クライアントは、IDを持つファイルのアップロード要求をストレージサーバーに送信します。次に、そのストレージサーバーはそのファイルを別のストレージサーバーにアップロードします...したがって、最初のサーバーから別のサーバーへのPOSTリクエストは、そのサーバーのPOSTメソッドメソッドから送信されます。

正しい方向へのサンプルコードまたはリンクは大歓迎です。

4

3 に答える 3

0

CommonsFileUploadパッケージを使用すると、サーブレットとWebアプリケーションに堅牢で高性能なファイルアップロード機能を簡単に追加できます。

FileUploadは、RFC1867「HTMLでのフォームベースのファイルアップロード」に準拠するHTTP要求を解析します。つまり、HTTPリクエストがPOSTメソッドを使用して送信され、コンテンツタイプが「multipart / form-data」の場合、FileUploadはそのリクエストを解析し、呼び出し元が簡単に使用できる方法で結果を利用できるようにします。ここ

この リンクを参照してください。

あなたが言ったので-

「ファイルと一緒に文字列(ファイルID)も送信できる必要があります」

Httpリクエストを解析し、FileItemがフォームフィールド(文字列/テキスト-ファイルIDの場合)であるかどうかを確認し、それに応じて処理する必要があります。

マルチパートコンテンツリクエストのサンプルコードは次のとおりです-

boolean isMultipart = ServletFileUpload.isMultipartContent(request);
        FileItemFactory factory = new DiskFileItemFactory();
        FileItem item=null;
        ServletFileUpload servletFileUpload = new ServletFileUpload(factory);
        servletFileUpload.setSizeMax(-1);

        List items =null;
        if (isMultipart) {  
            try 
            {
                items = servletFileUpload.parseRequest(request);
                Iterator iter = items.iterator();
                while (iter.hasNext()) {
                    item = (FileItem) iter.next();                  
                    if (item.isFormField()) 
                    {
//get your file Id from element to match with item.getFieldName() and do whatever you want
}
else if ( !item.isFormField() ){
//save your file here
}

それがあなたを助けることを願っています。

于 2013-03-20T19:36:01.633 に答える
0

HttpClientを使用してマルチパートデータを送信する方法のこのチュートリアルを見つけました。見てください

于 2013-03-20T19:34:31.613 に答える
0

これが私が実装できたソリューションであり、それは機能します:http ://www.dreamincode.net/forums/topic/316513-upload-file-from-one-servlet-to-another/

于 2013-04-03T18:26:08.640 に答える