我正在开发一个项目,该项目使用amazon s3存储用户的所有文件。它由Web应用程序和桌面客户端组成。桌面应用程序是用java构建的。要将文件从桌面应用程序上传到amazon s3,我要求在php中构建一个Web服务,以生成一个用于上传的已签名的amazon s3网址(使用s3类php)。桌面应用程序使用此URL上传文件。使用java中的Multipart上传完成文件上传。所有文件都已成功上传,但在开头和结尾添加的文件很少。我无法弄清楚为什么这些额外的行被加起来
我在上传之前上传了一个文件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上传到亚马逊s3,它工作正常。但是当我在java中使用分段上传上传它时,它会在文件中添加一些额外的行。任何人都可以向我推荐我做错的事情