Este tópico responde às perguntas mais frequentes sobre o uso do OSS SDK for Node.js.
O que fazer se a mensagem de erro "The region must be conform to the specifications" for retornada?
Esse erro ocorre porque o parâmetro Region é inválido. Verifique se o valor desse parâmetro é válido. Para obter mais informações sobre os IDs de região, consulte Regiões e endpoints.
Como ativar o acesso HTTPS?
Para ativar o acesso HTTPS, defina secure como true ao inicializar o OSS SDK for Node.js.
Como obter o progresso do upload?
Use o parâmetro progress para obter o progresso durante um upload multipartido (Node.js SDK).
Como obter o progresso do download?
Calcule o progresso no OSS SDK for Node.js com base no tamanho do tráfego de download.
Como fazer upload de imagens codificadas em Base64?
Converta as imagens em objetos File e faça o upload para o servidor OSS chamando a operação de API correspondente.
function dataURLtoFile(dataurl, filename) {
let arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
while(n--){
u8arr[n] = bstr.charCodeAt(n);
}
return new File([u8arr], filename, {type:mime});
}
let file = dataURLtoFile('base64 content', '');
client.multipartUpload('oss file name', file).then( (res)=> {
console.log(res)
}).catch((err) => {
console.log(err)
});
Como fazer upload de um objeto para um diretório específico?
Adicione o prefixo do diretório ao nome do objeto a ser enviado. Para obter mais informações, consulte Comparação entre OSS e sistemas de arquivos.
const OSS = require("ali-oss");
const client = new OSS({
// Specify the region where the bucket is located. For example, if the bucket is in the China (Hangzhou) region, set the region to oss-cn-hangzhou.
region: 'yourregion',
// Obtain access credentials from environment variables. Before you run this sample code, make sure that the OSS_ACCESS_KEY_ID and OSS_ACCESS_KEY_SECRET environment variables are set.
accessKeyId: process.env.OSS_ACCESS_KEY_ID,
accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
// Specify the bucket name.
bucket: 'yourbucketname'
});
client
.multipartUpload("base-dir/" + "object-name", "local-file", {
progress: async function (p) {
console.log("Progress: " + p);
},
})
.then((result) => {
console.log(result);
})
.then((res) => {
console.log(res);
})
.catch((err) => {
console.log(err);
});
Como gerar uma URL assinada para fazer upload de um objeto?
Se você usar o método PUT para fazer upload de um objeto, gere uma URL assinada. Para obter mais informações, consulte Usar uma URL assinada para autorização de acesso temporário.
O upload de objetos pelo método POST não oferece suporte a URLs assinadas. Construa uma solicitação POST para fazer upload dos objetos. Ao construir essa solicitação, configure os parâmetros Key, OSSAccessKeyId, policy e Signature na ordem especificada na operação de API. Para obter mais informações sobre a operação, consulte PostObject.
Como obter a URL assinada de um objeto?
Chame o método signatureUrl para obter a URL de download. Para obter mais informações, consulte o exemplo no GitHub.
Erro ao baixar um objeto maior que 1 GB: Response timeout for 60000ms, please increase the timeout or use multipartDownload.
O tempo limite para tarefas de download no OSS SDK for Node.js é de 60000 ms. Se ocorrer um erro de tempo limite ao baixar um objeto maior que 1 GB, use o download por streaming para baixar o objeto em incrementos e aumente adequadamente o tempo limite. Para obter mais informações sobre o download por streaming, consulte Download por streaming (Node.js SDK). Para obter mais informações sobre o parâmetro de tempo limite, consulte Parâmetros.