Preguntas frecuentes y soluciones para el OSS Browser.js SDK.
¿Cómo llamo a STS?
Los navegadores son entornos no confiables. Almacenar su AccessKey ID y AccessKey Secret directamente en el navegador representa un alto riesgo de seguridad. Use Security Token Service (STS) para llamar a las operaciones de la API de OSS desde un navegador.
Después de obtener un token de STS, inicialice el SDK de la siguiente manera.
<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>
¿Cómo habilito el acceso HTTPS?
Establezca secure:true durante la inicialización del SDK. Para más información, consulte Initialization (Browser.js SDK).
¿Cómo resuelvo problemas de dominios cruzados en un navegador?
Configure las reglas de intercambio de recursos de origen cruzado (CORS) para el bucket antes de usar el SDK en un navegador. Para más información, consulte Preparations.
¿Cómo establezco metadatos definidos por el usuario, tipos MIME y encabezados de solicitud para un archivo cargado?
Para más información, consulte Simple upload (Browser.js SDK).
¿Cómo funciona la carga reanudable en un navegador?
Guarde el punto de control en el almacenamiento local del navegador y páselo en la siguiente llamada para reanudar la carga. Para más información, consulte Resumable upload (Browser.js SDK).
¿Cómo cargo un archivo en una carpeta específica?
Especifique un prefijo para el nombre del objeto para cargar un archivo en una carpeta 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);
});
¿Cómo cargo una imagen codificada en Base64?
Convierta los datos Base64 en una imagen y luego llame a una operación de carga de OSS. Para más información, consulte el ejemplo de 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);
});
};
¿Cómo limito el tamaño de un archivo cargado?
En un navegador, obtenga el tamaño del archivo en bytes desde document.getElementById("file").files[0].size. Para más información sobre las solicitudes POST, consulte Upload data to OSS from a browser.
¿Cómo obtengo el progreso de la carga?
Use la carga multiparte para rastrear el progreso de la carga. Para más información, consulte Multipart upload (Browser.js SDK).
¿Cómo obtengo el progreso de la descarga?
El Browser.js SDK no admite el seguimiento del progreso de descarga. En su lugar, llame al método signatureUrl para generar una URL de descarga. Para más información, consulte References.
¿Cómo obtengo la URL firmada para un objeto?
Llame al método signatureUrl para generar una URL de descarga firmada. Para más información, consulte Preview or download files (Browser.js SDK).
¿Cómo uso una URL firmada generada por el SDK para cargar un recurso?
Las URL firmadas otorgan acceso a terceros para cargar y descargar recursos. El SDK proporciona el método signatureUrl para generar una URL firmada. Para ver un ejemplo, consulte Ejemplo de carga de un recurso mediante una URL firmada.
¿Cómo uso un formulario para cargar un recurso en un servidor de OSS?
Para más información, consulte Upload data to OSS from a browser.
¿Cómo ejecuto el proyecto de ejemplo?
Vaya al directorio ali-oss/example y ejecute npm run start.
¿Cómo agrego una devolución de llamada de carga?
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 más información sobre las devoluciones de llamada de carga, consulte How it works.
¿El navegador admite la navegación de archivos por fragmentos?
No. El Browser.js SDK no admite la navegación de archivos por fragmentos.
¿Cómo recopilo registros con el OSS JS SDK?
Para más información, consulte GitHub.