Si vous n'avez besoin que d'une partie des données d'un fichier, utilisez un téléchargement par plage pour récupérer les données situées dans une plage spécifiée.
Notes d'utilisation
Lorsque vous utilisez des outils de regroupement tels que Webpack et Browserify, installez le SDK OSS pour Browser.js en exécutant la commande npm install ali-oss.
Si vous souhaitez accéder à un bucket OSS depuis un navigateur sans avoir configuré de règles CORS pour ce bucket, le navigateur rejettera la requête. Vous devez donc configurer des règles CORS pour le bucket afin d'y accéder depuis un navigateur. Pour plus d'informations, consultez la section Installation.
-
Le SDK OSS pour Browser.js s'utilise généralement dans les navigateurs. Afin d'éviter l'exposition de votre paire de clés AccessKey, nous vous recommandons d'utiliser des identifiants d'accès temporaires obtenus via le Security Token Service (STS) pour accéder à OSS.
Les identifiants d'accès temporaires se composent d'une paire de clés AccessKey et d'un jeton de sécurité. La paire de clés AccessKey comprend un AccessKey ID et un AccessKey Secret. Pour savoir comment obtenir des identifiants d'accès temporaires, consultez la section Utilisation du STS pour l'autorisation d'accès temporaire.
Exemple de code
L'exemple de code suivant montre comment effectuer un téléchargement par plage :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Document</title>
</head>
<body>
<button id='download'>Download</button>
<!--Import the SDK file.-->
<script type="text/javascript" src="https://gosspublic.alicdn.com/aliyun-oss-sdk-6.18.0.min.js"></script>
<script type="text/javascript">
const client = new OSS({
// Set region to the region where your bucket is located. For example, if your bucket is in the China (Hangzhou) region, set region to oss-cn-hangzhou.
region: 'yourRegion',
authorizationV4: true,
// The temporary AccessKey ID and AccessKey secret obtained from Security Token Service (STS).
accessKeyId: 'yourAccessKeyId',
accessKeySecret: 'yourAccessKeySecret',
// The security token (SecurityToken) obtained from STS.
stsToken: 'yourSecurityToken',
// Specify the bucket name. For example, examplebucket.
bucket: "examplebucket",
});
// Get the DOM element.
const download = document.getElementById('download')
// For a 1000-byte file, the valid byte range is 0 to 999.
// If the specified range is invalid, for example, the start or end position is a negative value or is greater than the file size, the entire file is downloaded.
const start = 0, end = 999
// Add a listener to the button.
download.addEventListener('click', () => {
client.get('example.txt',{
headers: {
Range: `bytes=${start}-${end}`,
},
}).then(r => {
// Convert the returned data into a downloadable object in BLOB format.
const newBlob = new Blob([r.content], { type: r.res.headers['content-type'] });
// Create an anchor element.
const link = document.createElement('a')
// Attach the href property to the element.
link.href = window.URL.createObjectURL(newBlob)
// Specify the name of the local file.
link.download = 'example.txt'
// Download the object.
link.click()
// Remove the attached URL.
window.URL.revokeObjectURL(link.href)
})
})
</script>
</body>
</html>
Références
Pour consulter l'exemple de code complet relatif aux téléchargements par plage, rendez-vous sur la page GitHub example.
Pour obtenir la documentation de référence de l'API relative aux téléchargements par plage, consultez la section GetObject.