Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用php web服务在签名的amazon s3 url上进行java多部分上载_Java_Amazon Web Services_Amazon S3_Apache Httpclient 4.x_Multipartentity - Fatal编程技术网

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

使用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,在上传之前

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