Este tópico descreve como usar a operação File-Like do Object Storage Service (OSS) SDK for Go 2.0 para acessar objetos em um bucket.
Observações
Os códigos de exemplo deste tópico usam o ID da região China (Hangzhou),
cn-hangzhou, como referência. O endpoint público é o padrão. Para acessar o OSS a partir de outros produtos da Alibaba Cloud na mesma região, use o endpoint interno. Para obter mais informações sobre regiões e endpoints do OSS, consulte Regiões e endpoints.Neste tópico, as credenciais de acesso são obtidas de variáveis de ambiente. Para saber como configurar as credenciais de acesso, consulte Configurar credenciais de acesso.
Para baixar um arquivo, você deve ter a permissão
oss:GetObject. Para obter mais informações, consulte Conceder permissões personalizadas a um usuário RAM.
Método
A operação File-Like do OSS SDK for Go 2.0 permite acessar objetos em um bucket pelo método ReadOnlyFile.
O método ReadOnlyFile oferece os modos de fluxo único e prefetch. Ajuste o número de tarefas paralelas para aumentar a velocidade de leitura.
Esse método inclui um mecanismo de reconexão que garante robustez em ambientes de rede complexos.
type ReadOnlyFile struct {
...
}
func (c *Client) OpenFile(ctx context.Context, bucket string, key string, optFns ...func(*OpenOptions)) (file *ReadOnlyFile, err error)
Parâmetros da solicitação
|
Parâmetro |
Tipo |
Descrição |
|
ctx |
context.Context |
Contexto da solicitação. |
|
bucket |
string |
Nome do bucket. |
|
key |
string |
Nome do objeto. |
|
optFns |
...func(*OpenOptions) |
Opcional. Opções configuráveis ao abrir o objeto. |
Opções de OpenOptions
|
Opção |
Tipo |
Descrição |
|
Offset |
int64 |
Deslocamento inicial ao abrir o objeto. Valor padrão: 0. |
|
VersionId |
*string |
Número da versão do objeto especificado. Este parâmetro é válido apenas se existirem várias versões do objeto. |
|
RequestPayer |
*string |
Especifica que, se o pagamento por solicitante estiver ativado, RequestPayer deve ser definido como requester. |
|
EnablePrefetch |
bool |
Especifica se o modo prefetch deve ser ativado. Por padrão, o modo prefetch está desativado. |
|
PrefetchNum |
int |
Número de chunks pré-carregados. Valor padrão: 3. Este parâmetro é válido quando o modo prefetch está ativado. |
|
ChunkSize |
int64 |
Tamanho de cada chunk pré-carregado. Valor padrão: 6 MiB. Este parâmetro é válido quando o modo prefetch está ativado. |
|
PrefetchThreshold |
int64 |
Número de bytes lidos sequencialmente antes da ativação do modo prefetch. Valor padrão: 20 MiB. Este parâmetro é válido quando o modo prefetch está ativado. |
Parâmetros de resposta
|
Parâmetro |
Tipo |
Descrição |
|
file |
*ReadOnlyFile |
Instância de ReadOnlyFile. Este parâmetro é válido quando o valor de err é nil. Para obter mais informações, consulte ReadOnlyFile. |
|
err |
error |
Status do ReadOnlyFile. Se ocorrer um erro, o valor de err não será nil. |
Métodos comuns do ReadOnlyFile
|
Método |
Descrição |
|
Close() error |
Fecha os manipuladores de arquivo para liberar recursos, como memória e sockets ativos. |
|
Read(p []byte) (int, error) |
Lê bytes com comprimento len(p) da fonte de dados, armazena-os em p e retorna o número de bytes lidos e os erros encontrados. |
|
Seek(offset int64, whence int) (int64, error) |
Define o deslocamento para a próxima leitura ou gravação. Valores válidos para whence: 0: início. 1: deslocamento atual. 2: fim. |
|
Stat() (os.FileInfo, error) |
Consulta as informações do objeto, incluindo tamanho, hora da última modificação e metadados. |
Nota: Se o modo prefetch estiver ativado e ocorrerem várias leituras fora de ordem, o modo de fluxo único será usado automaticamente.
Exemplos
Ler todo o objeto usando o modo de fluxo único
Ler todo o objeto usando o modo prefetch
Ler dados restantes de uma posição específica com o método **Seek**
Referências
Para obter mais informações sobre arquivos de classe somente leitura, consulte o Guia do Desenvolvedor.
Para obter o código de exemplo completo da operação File-Like, visite o GitHub.
Para obter mais informações sobre a operação de API da operação File-Like, visite OpenFile.