通过使用签名网址手动启动可续传上传,在不进行身份验证的情况下上传

Node.js 中的示例:https://github.com/googleapis/nodejs-storage/pull/1711

代码示例

Node.js

如需了解详情,请参阅 Cloud Storage Node.js API 参考文档

如需向 Cloud Storage 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证

/**
 * TODO(developer): Uncomment the following lines before running the sample.
 */
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';

// The contents that you want to upload
// const contents = 'these are my contents';

// The new ID for your GCS file
// const destFileName = 'your-new-file-name';

// Imports the Google Cloud Node.js client library
const {Storage} = require('@google-cloud/storage');

const fetch = require('node-fetch');

// Creates a client
const storage = new Storage();

async function uploadWithoutAuthenticationSignedUrlStrategy() {
  const file = storage.bucket(bucketName).file(destFileName);

  // Use signed URLs to manually start resumable uploads.
  // Authenticating is required to get the signed URL, but isn't
  // required to start the resumable upload
  const options = {
    version: 'v4',
    action: 'resumable',
    expires: Date.now() + 30 * 60 * 1000, // 30 mins
  };
  //auth required
  const [signedUrl] = await file.getSignedUrl(options);

  // no auth required
  const resumableSession = await fetch(signedUrl, {
    method: 'POST',
    headers: {
      'x-goog-resumable': 'start',
    },
  });

  // Endpoint to which we should upload the file
  const location = resumableSession.headers.location;

  // Passes the location to file.save so you don't need to
  // authenticate this call
  await file.save(contents, {
    uri: location,
    resumable: true,
    validation: false,
  });

  console.log(`${destFileName} uploaded to ${bucketName}`);
}

uploadWithoutAuthenticationSignedUrlStrategy().catch(console.error);

后续步骤

如需搜索和过滤其他 Google Cloud 产品的代码示例,请参阅 Google Cloud 示例浏览器