Este tópico descreve como enviar rapidamente arquivos locais para o Object Storage Service (OSS) usando o upload simples. Esse método é direto e ideal para cenários que exigem o envio rápido de arquivos locais.
Observações
O código de exemplo neste tópico usa o ID da região
cn-hangzhouda região China (Hangzhou). Por padrão, use o endpoint público para acessar recursos em um bucket. Para acessar os recursos no bucket usando outros serviços da Alibaba Cloud na mesma região do bucket, use o endpoint interno. Para mais informações sobre as regiões e endpoints do OSS, consulte Regions and endpoints.Neste tópico, o exemplo obtém as credenciais de acesso a partir de variáveis de ambiente. Para mais informações sobre como configurar as credenciais de acesso, consulte Configure access credentials.
Permissões
Por padrão, uma conta Alibaba Cloud tem permissões totais. Os usuários RAM e as funções RAM de uma conta Alibaba Cloud não têm permissões por padrão. A conta Alibaba Cloud ou o administrador da conta deve conceder as permissões de operação usando RAM policies ou Bucket Policy.
|
API |
Ação |
Descrição |
|
PutObject |
|
Faz o upload de um objeto. |
|
|
Necessário se você especificar tags do objeto usando o cabeçalho |
|
|
|
Necessário se o cabeçalho |
|
|
|
Método
func (c *Client) PutObject(ctx context.Context, request *PutObjectRequest, optFns ...func(*Options)) (*PutObjectResult, error)
func (c *Client) PutObjectFromFile(ctx context.Context, request *PutObjectRequest, filePath string, optFns ...func(*Options)) (*PutObjectResult, error)
|
Operação |
Descrição |
|
Client.PutObject |
Faz o upload simples para enviar um objeto de até 5 GiB. Compatível com CRC-64 (ativado por padrão). Exibe o progresso de uma tarefa de upload na barra de progresso. Aceita corpo de requisição do tipo io.Reader. Se o corpo da requisição for do tipo io.Seeker e a tarefa de upload falhar, o objeto será reenviado. |
|
Client.PutObjectFromFile |
Oferece a mesma funcionalidade que Client.PutObject. Obtém o corpo da requisição a partir do caminho do arquivo local. |
Parâmetros da requisição
|
Parâmetro |
Tipo |
Descrição |
|
ctx |
context.Context |
O contexto da requisição, que permite especificar a duração total da requisição. |
|
request |
*PutObjectRequest |
Os parâmetros de uma operação de API específica, como Acl, ForbidOverwrite e Metadata. Para mais informações, acesse PutObjectRequest. |
|
optFns |
...func(*Options) |
Opcional. Parâmetro no nível da operação. Para mais informações, acesse Options. |
Parâmetros de resposta
|
Parâmetro |
Tipo |
Descrição |
|
result |
*PutObjectResult |
A resposta da operação. Este parâmetro é válido quando o valor de err é nil. Para mais informações, acesse PutObjectResult. |
|
err |
error |
O status da requisição. Se a requisição falhar, o valor de err não pode ser nil. |
Exemplos
O código de exemplo a seguir mostra como fazer o upload de um arquivo local para um bucket específico:
package main
import (
"context"
"flag"
"log"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)
// Specify the global variables.
var (
region string // The region in which the bucket is located.
bucketName string // The name of the bucket.
objectName string // The name of the object.
)
// Specify the init function used to initialize command line parameters.
func init() {
flag.StringVar(®ion, "region", "", "The region in which the bucket is located.")
flag.StringVar(&bucketName, "bucket", "", "The name of the bucket.")
flag.StringVar(&objectName, "object", "", "The name of the object.")
}
func main() {
// Parse command line parameters.
flag.Parse()
// Check whether the bucket name is empty.
if len(bucketName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, bucket name required")
}
// Check whether the region is empty.
if len(region) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, region required")
}
// Check whether the object name is empty.
if len(objectName) == 0 {
flag.PrintDefaults()
log.Fatalf("invalid parameters, object name required")
}
// Load the default configurations and specify the credential provider and region.
cfg := oss.LoadDefaultConfig().
WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
WithRegion(region)
// Create an OSSClient instance.
client := oss.NewClient(cfg)
// Specify the path of the local file that you want to upload. Example: /Users/localpath/exampleobject.txt.
localFile := "/Users/localpath/exampleobject.txt"
// Create a request to upload the local file.
putRequest := &oss.PutObjectRequest{
Bucket: oss.Ptr(bucketName), // Specify the name of the bucket.
Key: oss.Ptr(objectName), // Specify the name of the object.
StorageClass: oss.StorageClassStandard, // Set the storage class of the object to Standard.
Acl: oss.ObjectACLPrivate, // Set the access control list (ACL) of the object to private.
Metadata: map[string]string{
"yourMetadataKey 1": "yourMetadataValue 1", // Specify the metadata of the object.
},
}
// Execute the request to upload the local file.
result, err := client.PutObjectFromFile(context.TODO(), putRequest, localFile)
if err != nil {
log.Fatalf("failed to put object from file %v", err)
}
// Display the result of the object upload operation.
log.Printf("put object from file result:%#v\n", result)
}
Cenários comuns
Upload de uma string
Upload de um array de bytes
Upload de um fluxo de rede
Exibir o progresso durante o upload
Configurar um callback ao fazer o upload de um arquivo local
Referências
Para o código de exemplo completo de upload simples, acesse put_object.go e put_object_from_file.go.
Para mais informações sobre as operações de API usadas no upload simples, acesse PutObject e PutObjectFromFile.