使用php web服务在签名的amazon s3 url上进行java多部分上载
我正在做一个项目,它使用AmazonS3来存储用户的所有文件。它由web应用程序和桌面客户端组成。桌面应用程序是用java构建的。为了将一个文件从桌面应用程序上传到AmazonS3,我请求在php中构建一个web服务,以生成一个签名的AmazonS3URL进行上传(使用s3类php)。桌面应用程序使用此url上载文件。文件上传使用java中的多部分上传完成。所有文件都已成功上载,但在文件的开头和结尾添加了很少的额外行。我弄不明白为什么这些额外的行被加起来了 我上传了一个文件a.txt,在上传之前它的内容是“abcd”。但是,当使用桌面java客户端将它们上传到AmazonS3时,会添加几行代码,上传的文件如下所示使用php web服务在签名的amazon s3 url上进行java多部分上载,java,amazon-web-services,amazon-s3,apache-httpclient-4.x,multipartentity,Java,Amazon Web Services,Amazon S3,Apache Httpclient 4.x,Multipartentity,我正在做一个项目,它使用AmazonS3来存储用户的所有文件。它由web应用程序和桌面客户端组成。桌面应用程序是用java构建的。为了将一个文件从桌面应用程序上传到AmazonS3,我请求在php中构建一个web服务,以生成一个签名的AmazonS3URL进行上传(使用s3类php)。桌面应用程序使用此url上载文件。文件上传使用java中的多部分上传完成。所有文件都已成功上载,但在文件的开头和结尾添加了很少的额外行。我弄不明白为什么这些额外的行被加起来了 我上传了一个文件a.txt,在上传之前
--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上传到AmazonS3,效果很好。但是当我在java中使用multipartupload上传它时,它会在文件中添加一些额外的行。谁能告诉我我做错了什么吗