1

我正在开发一个使用 amazon s3 存储用户所有文件的项目。它由 Web 应用程序和桌面客户端组成。桌面应用程序是用 java 构建的。要将文件从桌面应用程序上传到 amazon s3,我请求在 php 中构建 Web 服务以生成签名的 amazon s3 url 以进行上传(使用 s3 类 php)。桌面应用程序使用此 URL 上传文件。文件上传是使用java中的Multipart upload来完成的。所有文件都已成功上传,但在文件的开头和结尾添加了几行额外的行。我无法弄清楚为什么这些额外的行会被加起来

我上传了一个文件a.txt,上传前内容为“abcd”。但是当使用桌面 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,我使用 ajax 上传到 amazon s3,它工作正常。但是当我在java中使用分段上传上传它时,它会在文件中添加一些额外的行。请任何人都可以建议我做错什么

4

0 回答 0