Perguntas e soluções comuns sobre o oss Browser.js SDK.
Como chamar o STS?
Navegadores são ambientes não confiáveis. Armazenar o AccessKey ID e o AccessKey Secret diretamente no navegador representa alto risco de segurança. Use o Security Token Service (STS) para chamar operações da API do oss no navegador.
Após obter um token STS, inicialize o SDK conforme o exemplo a seguir.
<script type="text/javascript">
$.ajax("http://your_sts_server/",{method: 'GET'},function (err, result) {
let client = new OSS({
authorizationV4: true,
accessKeyId: result.AccessKeyId,
accessKeySecret: result.AccessKeySecret,
stsToken: result.SecurityToken,
region: 'yourRegion',
bucket: 'yourBucketName'
});
});
</script>
Como ativar o acesso HTTPS?
Defina secure:true durante a inicialização do SDK. Para mais informações, consulte Inicialização (Browser.js SDK).
Como resolver problemas de cross-domain no navegador?
Configure as regras de CORS (compartilhamento de recursos de origem cruzada) do bucket antes de usar o SDK no navegador. Para mais detalhes, consulte Preparações.
Como definir metadados personalizados, tipos MIME e cabeçalhos de requisição para um arquivo enviado?
Para mais informações, consulte Upload simples (Browser.js SDK).
Como funciona o upload retomável no navegador?
Salve o checkpoint no armazenamento local do navegador e transmita-o na próxima chamada para retomar o upload. Para mais informações, consulte Upload retomável (Browser.js SDK).
Como enviar um arquivo para uma pasta específica?
Especifique um prefixo no nome do objeto para enviar o arquivo a uma pasta específica.
let OSS = require('ali-oss')
let client = new OSS({
authorizationV4: true,
region: 'yourRegion',
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
bucket: 'yourBucketName'
});
client.multipartUpload('base-dir/' +'object-key', 'local-file', {
progress: async function (p) {
console.log('Progress: ' + p);
}
});
console.log(result);
}).catch((err) => {
console.log(err);
});
Como enviar uma imagem codificada em Base64?
Converta os dados Base64 em imagem e chame uma operação de upload do oss. Para mais informações, consulte o exemplo no GitHub.
/**
* Converts Base64 to a file.
* @param dataurl The Base64 content.
* @param filename Set a meaningful suffix. You can also set the MIME type in the options.
* @returns {File|*}
*/
const dataURLtoFile = function dataURLtoFile(dataurl, filename) {
const arr = dataurl.split(',');
const mime = arr[0].match(/:(.*?);/)[1];
const bstr = atob(arr[1]);
let n = bstr.length;
const u8arr = new Uint8Array(n);
while (n--) {
u8arr[n] = bstr.charCodeAt(n);
}
return new Blob([u8arr], { type: mime });// if env support File, also can use this: return new File([u8arr], filename, { type: mime });
};
// The client is an OSS client instance.
const uploadBase64Img = function uploadBase64Img(client) {
// The Base64 content.
const base64Content = 'data:image:****';
const filename = 'img.png';
const imgfile = dataURLtoFile(base64Content, filename);
// The key is the object key for the upload. The imgFile is the image returned after being processed by dataURLtoFile.
client.multipartUpload(key, imgfile).then((res) => {
console.log('upload success: %j', res);
}).catch((err) => {
console.error(err);
});
};
Como limitar o tamanho de um arquivo enviado?
No navegador, obtenha o tamanho do arquivo em bytes por meio de document.getElementById("file").files[0].size. Para mais informações sobre requisições POST, consulte Enviar dados para o oss a partir de um navegador.
Como obter o progresso do upload?
Use o upload multipart para acompanhar o progresso do envio. Para mais informações, consulte Upload multipart (Browser.js SDK).
Como obter o progresso do download?
O Browser.js SDK não suporta acompanhamento do progresso de download. Chame o método signatureUrl para gerar uma URL de download. Para mais informações, consulte Referências.
Como obter a URL assinada de um objeto?
Chame o método signatureUrl para gerar uma URL de download assinada. Para mais informações, consulte Visualizar ou baixar arquivos (Browser.js SDK).
Como usar uma URL assinada gerada pelo SDK para enviar um recurso?
URLs assinadas concedem acesso a terceiros para envio e download de recursos. O SDK fornece o método signatureUrl para gerar essa URL. Para ver um exemplo, consulte Exemplo de envio de recurso usando URL assinada.
Como usar um formulário para enviar um recurso a um servidor oss?
Para mais informações, consulte Enviar dados para o oss a partir de um navegador.
Como executar o projeto de exemplo?
Acesse o diretório ali-oss/example e execute npm run start.
Como adicionar um callback de upload?
const uploadFile = function uploadFile(client) {
if (!uploadFileClient || Object.keys(uploadFileClient).length === 0) {
uploadFileClient = client;
}
const file = document.getElementById('file').files[0];
const key = document.getElementById('object-key-file').value.trim() || 'object';
console.log(`${file.name} => ${key}`);
const options = {
progress,
partSize: 500 * 1024,
timeout:60000,
meta: {
year: 2017,
people: 'test',
},
callback: {
// The position where the upload callback is added.
url: 'https://example.aliyundoc.com/v2/sync',
/* host: 'oss-cn-shenzhen.aliyuncs.com', */
/* eslint no-template-curly-in-string: [0] */
body: 'bucket=${bucket}&object=${object}&var1=${x:var1}',
contentType: 'application/x-www-form-urlencoded',
customValue: {
var1: 'value1',
var2: 'value2',
},
},
Para mais informações sobre callbacks de upload, consulte Como funciona.
O navegador suporta navegação de arquivos por partes?
Não. O Browser.js SDK não suporta navegação de arquivos dividida em partes.
Como coletar logs com o oss JS SDK?
Para mais informações, consulte o GitHub.