Questions fréquentes et solutions pour le SDK OSS Browser.js.
Comment appeler STS ?
Les navigateurs sont des environnements non fiables. Stocker votre AccessKey ID et votre AccessKey Secret directement dans le navigateur présente un risque de sécurité élevé. Utilisez Security Token Service (STS) pour appeler les opérations d'API OSS depuis un navigateur.
Après avoir obtenu un jeton STS, initialisez le SDK comme suit.
<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>
Comment activer l'accès HTTPS ?
Définissez secure:true lors de l'initialisation du SDK. Pour plus d'informations, consultez la rubrique Initialisation (SDK Browser.js).
Comment résoudre les problèmes interdomaines dans un navigateur ?
Configurez les règles de partage des ressources entre origines (CORS) pour le bucket avant d'utiliser le SDK dans un navigateur. Pour plus d'informations, consultez la section Préparatifs.
Comment définir les métadonnées personnalisées, les types MIME et les en-têtes de requête pour un fichier envoyé ?
Pour plus d'informations, consultez la rubrique Envoi simple (SDK Browser.js).
Comment fonctionne l'envoi avec reprise dans un navigateur ?
Enregistrez le point de contrôle dans le stockage local du navigateur et transmettez-le lors du prochain appel pour reprendre l'envoi. Pour plus d'informations, consultez la rubrique Envoi avec reprise (SDK Browser.js).
Comment envoyer un fichier vers un dossier spécifique ?
Spécifiez un préfixe pour le nom de l'objet afin d'envoyer un fichier vers un dossier spécifique.
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);
});
Comment envoyer une image encodée en Base64 ?
Convertissez les données Base64 en image, puis appelez une opération d'envoi OSS. Pour plus d'informations, consultez l'exemple 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);
});
};
Comment limiter la taille d'un fichier envoyé ?
Dans un navigateur, récupérez la taille du fichier en octets à partir de document.getElementById("file").files[0].size. Pour plus d'informations sur les requêtes POST, consultez la rubrique Envoi de données vers OSS depuis un navigateur.
Comment obtenir la progression de l'envoi ?
Utilisez l'envoi en plusieurs parties pour suivre la progression de l'envoi. Pour plus d'informations, consultez la rubrique Envoi en plusieurs parties (SDK Browser.js).
Comment obtenir la progression du téléchargement ?
Le SDK Browser.js ne prend pas en charge le suivi de la progression du téléchargement. Appelez plutôt la méthode signatureUrl pour générer une URL de téléchargement. Pour plus d'informations, consultez la rubrique Références.
Comment obtenir l'URL signée d'un objet ?
Appelez la méthode signatureUrl pour générer une URL de téléchargement signée. Pour plus d'informations, consultez la rubrique Aperçu ou téléchargement de fichiers (SDK Browser.js).
Comment utiliser une URL signée générée par le SDK pour envoyer une ressource ?
Les URL signées accordent un accès tiers pour l'envoi et le téléchargement de ressources. Le SDK fournit la méthode signatureUrl pour générer une URL signée. Pour un exemple, consultez l'exemple d'envoi d'une ressource à l'aide d'une URL signée.
Comment utiliser un formulaire pour envoyer une ressource vers un serveur OSS ?
Pour plus d'informations, consultez la rubrique Envoi de données vers OSS depuis un navigateur.
Comment exécuter le projet d'exemple ?
Accédez au répertoire ali-oss/example et exécutez npm run start.
Comment ajouter un rappel d'envoi ?
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',
},
},
Pour plus d'informations sur les rappels d'envoi, consultez la rubrique Fonctionnement.
Le navigateur prend-il en charge la navigation dans les fichiers par fragment ?
Non. Le SDK Browser.js ne prend pas en charge la navigation dans les fichiers par fragment.
Comment collecter des journaux avec le SDK OSS JS ?
Pour plus d'informations, consultez GitHub.