0

httpclientを使用してファイルをアップロードしています。ファイルサイズをアップロードした後、変更されます。ファイルのアップロード中に、いくつかの余分なものがファイルに追加されます。

ファイルをアップロードする前に、次のものが含まれています。

hi this is vipin check

ファイルをアップロードした後、次のものが含まれます。

--j9q7PmvnWSP9wKHHp2w_KCI4Q2jCniJvPbrE0
Content-Disposition: form-data; name="vipin.txt"; filename="vipin.txt"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

hi this is vipin check
--j9q7PmvnWSP9wKHHp2w_KCI4Q2jCniJvPbrE0--

ファイルサイズが変更されているのはなぜですか?この余分なコンテンツが追加されるのはなぜですか?

私のhttpclientコードは次のとおりです。

HttpPut httppost = new HttpPut(URIUtil.encodeQuery(newUrl));
httppost.setHeader("X-Auth-Token", cred.getAuthToken());
httppost.addHeader("User-Agent", "NetMagic-file-upload");
System.out.println("Dest : " + dest.getAbsolutePath());

MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = (ContentBody) new FileBody(src);
mpEntity.addPart(dest.getName(), cbFile);
httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());

HttpResponse response = httpclient.execute(httppost);
4

2 に答える 2

0

クライアントはマルチパート エンティティとしてアップロードするファイルを送信していますが、サーバーはそれをプレーン ファイルとして扱っているようです。障害がどこにあるのかは完全には明らかではありません。

  • サーバーがリクエスト ヘッダーのコンテンツ タイプを無視している可能性があります。これは、アップロード要求の処理を担当するサーブレット (またはその他のもの) のバグである可能性が最も高いでしょう。

  • クライアントがリクエスト ヘッダーにコンテンツ タイプを設定していない可能性があります。クライアント ライブラリがそれを処理してくれると期待していました。ただし、明示的に行う必要がある可能性があります。

適切なマルチパート コンテンツ タイプがあるかどうかを確認するために、クライアントから送信された、またはサーバーによって受信されたリクエスト ヘッダーを確認することをお勧めします。これは、問題がどこにあるかを特定するのに役立ちます。


しかし、明らかな解決策があります。サーバーがマルチパートに対応できない場合は、クライアント側を変更してマルチパートを送信しないようにします。

于 2013-01-16T10:20:02.273 に答える
0

PUT リクエストを実行していますが、クライアントは、HTML フォームの投稿で一般的に使用されているマルチパート エンコーディングを使用しています。

于 2013-01-16T10:20:26.043 に答える