使用HttpPost发送文件后文件被破坏

时间:2016-05-24 09:49:06

标签: java file base64 httprequest

我尝试做的是将数据作为字符串发送到我的一个外部服务器。但是在我设置了Request之后,我文件系统上的文件就被破坏了。

以下是我将文件读入String

的方法
File file = new File("/some/path/on/my/hdd/testimg.png");
FileInputStream fis = new FileInputStream(file);
byte[] binaryData = new byte[(int) file.length()];
fis.read(binaryData);
String content = Base64.encodeBase64URLSafeString(binaryData);
fis.close();

以下是我如何进行POST请求:

HttpClient client = HttpClientBuilder.create().build();
HttpPost request = new HttpPost("some.url");
... some headers ...
request.setEntity(new StringEntity(this.body)); // this.body is the String
HttpResponse response = client.execute(request); // HERE THE FILE GETS CORRUPTED
InputStream is = response.getEntity().getContent();
this.result = IOUtils.toString(is, "UTF-8");

有人可以告诉我为什么我的硬盘上的文件/some/path/on/my/hdd/testimg.png在发送请求后会被损坏吗?

感谢您的建议!

1 个答案:

答案 0 :(得分:1)

正如您所说,本地文件系统上的文件在请求后已损坏,只有几种可能性:

  • 事先已经损坏
  • 程序中还有另一个写入文件的地方
  • 如果您发送请求的服务器在同一台计算机上运行,​​则服务器上运行的应用程序可能会受到指责