将文件上传到Google Cloud Storage

问题描述 投票:0回答:1

我正在不同的云存储上做一些实验,我有文件(图像2MB大小)。 我想测试上传和下载到不同云供应商的速度。 google上的大多数示例都使用的不是我想要的html格式,但是对我来说文件已经确定,因此我需要运行代码几天并将其保留,以查看我每小时的速度之间的差异已在Amazon S3上进行了测试,但我找不到如何在Google中上传它,以下代码是我想做的示例,我没有上传功能

    package main.java;
//[START all]
/*
 * Copyright (c) 2014 Google Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
 * in compliance with the License. You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software distributed under the License
 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
 * or implied. See the License for the specific language governing permissions and limitations under
 * the License.
 */

import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.DataStoreFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.storage.Storage;
import com.google.api.services.storage.StorageScopes;
import com.google.api.services.storage.model.Bucket;
import com.google.api.services.storage.model.StorageObject;


import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * Main class for the Cloud Storage API command line sample.
 * Demonstrates how to make an authenticated API call using OAuth 2 helper classes.
 */
public class StorageSample {

  /**
   * Be sure to specify the name of your application. If the application name is {@code null} or
   * blank, the application will log a warning. Suggested format is "MyCompany-ProductName/1.0".
   */
  private static final String APPLICATION_NAME = "seraphic-beacon-659";
  private static final String BUCKET_NAME = "afhabucket";

  /** Directory to store user credentials. */
  private static final java.io.File DATA_STORE_DIR =
      new java.io.File(System.getProperty("user.home"), ".store/storage_sample");

  /**
   * Global instance of the {@link DataStoreFactory}. The best practice is to make it a single
   * globally shared instance across your application.
   */
  private static FileDataStoreFactory dataStoreFactory;

  /** Global instance of the JSON factory. */
  private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

  /** Global instance of the HTTP transport. */
  private static HttpTransport httpTransport;

  private static Storage client;

  /** Authorizes the installed application to access user's protected data. */
  private static Credential authorize() throws Exception {
    // Load client secrets.
        GoogleClientSecrets clientSecrets = null;
        try {
        clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
            new InputStreamReader(StorageSample.class.getResourceAsStream("../resources/client_secrets.json")));
        if (clientSecrets.getDetails().getClientId() == null ||
                clientSecrets.getDetails().getClientSecret() == null) {
                throw new Exception("client_secrets not well formed.");
        }
        } catch (Exception e) {
                System.out.println("Problem loading client_secrets.json file. Make sure it exists, you are " + 
                                   "loading it with the right path, and a client ID and client secret are " +
                                   "defined in it.\n" + e.getMessage());
                System.exit(1);
        }

    // Set up authorization code flow.
    // Ask for only the permissions you need. Asking for more permissions will
    // reduce the number of users who finish the process for giving you access
    // to their accounts. It will also increase the amount of effort you will
    // have to spend explaining to users what you are doing with their data.
    // Here we are listing all of the available scopes. You should remove scopes
    // that you are not actually using.
    Set<String> scopes = new HashSet<String>();
    scopes.add(StorageScopes.DEVSTORAGE_FULL_CONTROL);
    scopes.add(StorageScopes.DEVSTORAGE_READ_ONLY);
    scopes.add(StorageScopes.DEVSTORAGE_READ_WRITE);

    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(
        httpTransport, JSON_FACTORY, clientSecrets, scopes)
        .setDataStoreFactory(dataStoreFactory)
        .build();
    // Authorize.
    return new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user");
  }

  public static void main(String[] args) {
    try {
      // Initialize the transport.
      httpTransport = GoogleNetHttpTransport.newTrustedTransport();

      // Initialize the data store factory.
      dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

      // Authorization.
      Credential credential = authorize();

      // Set up global Storage instance.
      client = new Storage.Builder(httpTransport, JSON_FACTORY, credential)
          .setApplicationName(APPLICATION_NAME).build();

      // Get metadata about the specified bucket.
      Storage.Buckets.Get getBucket = client.buckets().get(BUCKET_NAME);
      getBucket.setProjection("full");
      Bucket bucket = getBucket.execute();
      System.out.println("name: " + BUCKET_NAME);
      System.out.println("location: " + bucket.getLocation());
      System.out.println("timeCreated: " + bucket.getTimeCreated());
      System.out.println("owner: " + bucket.getOwner());

//==========================


     // upload function


//=============================


    } catch (IOException e) {
      System.err.println(e.getMessage());
    } catch (Throwable t) {
      t.printStackTrace();
    }
    System.exit(1);
  }
}
//[END all]
google-cloud-storage
1个回答
1
投票

objects.insert文档页面上有一个从Java上传的示例。

© www.soinside.com 2019 - 2024. All rights reserved.