1

私は、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 でマルチパート アップロードを使用してアップロードすると、ファイルに余分な行がいくつか追加されます。私が間違っていることを誰かに教えてください

4

0 に答える 0