有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用php web服务在签名的amazon s3 url上进行java多部分上载

我正在做一个项目,它使用AmazonS3来存储用户的所有文件。它由web应用程序和桌面客户端组成。桌面应用程序是用java构建的。为了将一个文件从桌面应用程序上传到AmazonS3,我请求在php中构建一个web服务,以生成一个签名的AmazonS3URL进行上传(使用s3类php)。桌面应用程序使用此url上载文件。文件上传使用java中的多部分上传完成。所有文件都已成功上载,但在文件的开头和结尾添加了很少的额外行。我弄不明白为什么这些额外的行被加起来了

我上传了一个文件a.txt,在上传之前它的内容是“abcd”。但是,当使用桌面java客户端将它们上传到AmazonS3时,会添加几行代码,上传的文件如下所示

 --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上传它时,它会在文件中添加一些额外的行。谁能告诉我我做错了什么吗


共 (0) 个答案