私は、Amazon s3 を使用してユーザーのすべてのファイルを保存するプロジェクトに取り組んでいます。これは、Web アプリケーションとデスクトップ クライアントで構成されます。デスクトップ アプリケーションは Java でビルドされます。デスクトップアプリケーションからAmazon s3にファイルをアップロードするには、アップロード用の署名付きAmazon s3 URLを生成するためにphpでビルドされたWebサービスをリクエストしています( s3 class php を使用)。デスクトップ アプリケーションは、この URL を使用してファイルをアップロードします。ファイルのアップロードは、Java のマルチパート アップロードを使用して行われます。すべてのファイルが正常にアップロードされていますが、ファイルの最初と最後に余分な行がいくつか追加されています。これらの余分な行が追加される理由を理解できません
アップロード前に「abcd」という内容のファイル a.txt をアップロードしました。しかし、デスクトップ Java クライアントを使用して Amazon s3 にアップロードすると、いくつかの行が追加され、アップロードされたファイルは次のようになります。
--y1IIH7wF3YYSFQ-R-Gwels7Wysmiosm91sYdNZ
Content-Disposition: form-data; name="attachment"
Content-Type: text/plain
Content-Transfer-Encoding: binary
abcd
--y1IIH7wF3YYSFQ-R-Gwels7Wysmiosm91sYdNZ—
ここにJavaコードがあります
File file = new File("D:\\a.txt") ;
Path source = Paths.get(file.getPath());
String mimeType = Files.probeContentType(source);
HttpPut put = new HttpPut (secretUrlFromWebServicePHP) ;
put.setHeader("Content-Type",mimeType);
put.setHeader("x-amz-acl","authenticated-read");
try
{
MultipartEntity multiPartEntity = new MultipartEntity () ;
ContentBody fileBody = new FileBody(file, ContentType.create(mimeType)) ;
multiPartEntity.addPart("attachment", fileBody) ;
put.setEntity(multiPartEntity) ;
response = client.execute(put) ;
}
Catch(Exception e)
{
}
PHP Web サービスが返す署名付き URL が有効であることを確認しました。その署名付き URL を使用して、Amazon s3 への ajax アップロードを使用しましたが、正常に動作します。しかし、Java でマルチパート アップロードを使用してアップロードすると、ファイルに余分な行がいくつか追加されます。私が間違っていることを誰かに教えてください