【问题标题】:how to upload a file into Google Cloud Storage bucket using JSON API and CloseableHttpClient?如何使用 JSON API 和 CloseableHttpClient 将文件上传到 Google Cloud Storage 存储桶?
【发布时间】:2018-12-18 05:39:02
【问题描述】:

我正在尝试使用 CloseableHttpClient.getting response as 200 将 CSV 文件上传到谷歌云存储,但内容类型未正确反映。

CloseableHttpClient httpClient = HttpClients.createDefault();
 CloseableHttpResponse response;
 try {
     ContentBody  fileBody = new FileBody(content, ContentType.DEFAULT_BINARY);
     HttpEntity entity = MultipartEntityBuilder.create().addPart("FILE_NAME", fileBody)
                        .setMode(HttpMultipartMode.BROWSER_COMPATIBLE).build();
     HttpPost request = new HttpPost(
                        "https://www.googleapis.com/upload/storage/v1/b/BUCKET_NAME/o?uploadType=media&name=FILE_NAME");
     request.addHeader(Constants.API_HEADER_AUTHORIAZATION,
                        Constants.API_HEADER_AUTHORIAZATION_VALUE + accessToken());
     request.setEntity(entity);
     response = httpClient.execute(request);

请找到下面上传的谷歌存储桶截图:

【问题讨论】:

标签: java google-cloud-storage apache-httpclient-4.x


【解决方案1】:

根据我们的评论,您需要以任何一种方式更改您的代码。每个云存储提供商都有非常不同的文件上传方式,想想授权过程,你肯定需要改变它。

不仅代码需要更改,使用提供的库也是一种更优化的方式。如果您在 GCP 产品(比如说 GAE)中运行它的代码,它将使用内部网络,因此速度会更快。即使不是这种情况,库的路由也会更好,因为他们确实这样做了。一般来说,作为一种好的做法,使用云提供商库是可行的方法。

为了让您能够更轻松地在云提供商之间切换,我将创建一个特定的函数来上传文件,并从您的主函数中调用它。这样,您只需要更改该功能。

再次,这是我在之前的 cmets [1][2][3] 中发送的所需文档

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-03
  • 2017-11-29
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2019-06-14
相关资源
最近更新 更多