【问题标题】:How to create a org.apache.http.entity.mime.content.FileBody when using Google App Engine使用 Google App Engine 时如何创建 org.apache.http.entity.mime.content.FileBody
【发布时间】:2013-07-25 22:09:07
【问题描述】:

所以我正在尝试制作一个多部分形式的 POST,并且我想将 org.apache.http.entity.mime.content.FileBody 附加到我将要发布的 MultipartEntity 上。现在我已经获得了想要填充FileBody 的原始字符串文件数据。但是,这个项目使用的是 Google App Engine,它禁止我所见过的所有生成 FileBody 的方式。有谁知道如何创建一个FileBody 对象并在 GAE 中填充它?

【问题讨论】:

  • 您看到它禁止哪些方式,以及哪些错误/警告?
  • 它限制您使用可以写入文件的类,例如 FileWriter 和 FileOutputStream。你需要创建一个 java.io.File 对象才能创建一个 FileBody 对象
  • 基本上它不会让你写入用户的本地机器。我想知道是否有一种方法可以创建和填充 java.io.File 对象而不写入用户的本地机器

标签: java google-app-engine java-io multipartentity


【解决方案1】:

所以忽略 FileBody。您想使用 MultipartEntity.addPart(ContentBody content) 方法。这适用于 FileBody,因为 FileBody 的父类实现了 ContentBody。

ContentBody 是一个超级简单的接口,只有两个方法。创建一个实现它的类,创建你的类的一个实例,并将它传递给 addPart 方法。

public ByteContentBody implements ContentBody {
  private String name;
  private byte[] data;

  public ByteContentBody(String name, byte[] data) {
    this.name = name;
    this.data = data;
  }

  public String getFilename(){
    returns name;
  }

  public void writeTo(OutputStream out) throws IOException {
    out.write(data);
  }
}

http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/MultipartEntity.html

http://hc.apache.org/httpcomponents-client-ga/httpmime/apidocs/org/apache/http/entity/mime/content/ContentBody.html

【讨论】:

  • 谢谢,这是我最终使用的,但使用 apache HttpClient 和 HttpPost 对象也可以方便发布
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多