Apache HttpComponentsのHttpClient
を使用して、サードパーティのWebインターフェイスにファイルをアップロードしています。コードは次のようになります。実際にファイルを使用しないHTTPファイルのアップロード
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("UPLOAD_URL");
FileBody bin = new FileBody(file, filename, "text/csv", "UTF-8");
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("Username", new StringBody("User"));
reqEntity.addPart("Password", new StringBody("Password"));
reqEntity.addPart("bin", bin);
httppost.setEntity(reqEntity);
HttpResponse response = httpclient.execute(httppost);
これは期待どおりです。
このデータは機密性が高いため、クライアント側に保存する必要はありません。 (このプログラムはWebサービスからこのデータを取得しますが、アップロードする目的でファイルを作成しただけです)。
実際のファイルを使用しない方法を探していますが、メモリ内表現。代わりにInputStreamBody
を使用しようとしましたが、これらの要求は第三者システムによって拒否されます。
どのようにこれを行うことができますか?
、まだあなたにはありません。だから、私はこのような
InputStreamBody
を拡張することになりましたあなたのアプリが上記のファイルにアクセスできるようにしますか?私はここで間違った質問をしていると言いたいと思います。メモリやファイルをどこに保存しても問題ありません。クライアントは*アクセスするでしょう... – Marcelo本当ですが、これはまだ可能性があります有効な要件 - ユーザーを信頼するが、機密性の高い個人データをディスク上に置くことを望まない場合 – DNA
私たちのWebサービスはファイルを返すものではありません。ファイルはアップロードするためだけにクライアントアプリケーションによって作成されます。クライアントアプリケーションはこのデータにアクセスできますが、クライアントマシン上にファイルとして保存する必要はありません。データはアップロード後すぐに削除されますが、失敗する可能性があります。その場合、データは誰でもアクセスできるようにクライアントマシンに残ります。 – TPete