es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Copiar un archivo desde un contenedor de almacenamiento de Azure Blob a los recursos compartidos de archivos de Azure utilizando Nodejs.

¿Hay alguna manera de copiar archivos desde Azure Containers (blobs) a Azure File shares?

Pude copiar archivos de un contenedor a otro, como se muestra a continuación. Pero quería copiar archivos de Blob a File Shares.

“`
const {
BlobServiceClient,
StorageSharedKeyCredential
} = require(“@azure/storage-blob”);

async function copy() {

const account = ““;
const accountKey = ““;
const cert = new StorageSharedKeyCredential(account, accountKey)
const blobServiceClient = new BlobServiceClient(
`https://${account}.blob.core.windows.net`,
cert
);

const sourceContainer = blobServiceClient.getContainerClient(“documents”)
const desContainer = blobServiceClient.getContainerClient(“copy”)
//si el contenedor de destino no existe, por favor ejecute el siguiente código
// await desContainer.create()

//copiar blob
const sourceBlob = sourceContainer.getBlobClient(“file1.png”);
console.log(sourceBlob, sourceBlob.name)
const desBlob = desContainer.getBlobClient(sourceBlob.name)
const response = await desBlob.beginCopyFromURL(sourceBlob.url);
const result = (await response.pollUntilDone())
console.log(result._response.status)
console.log(result.copyStatus)
}

copy()
“`

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de copiar archivos de Contenedores de Azure (blobs) a Compartimentos de Archivos de Azure usando el SDK de Node.js de Azure Storage. El ejemplo de código proporcionado en la pregunta demuestra cómo copiar archivos de un contenedor a otro usando el método beginCopyFromURL. Para copiar archivos de un blob a un compartimento de archivos, podemos usar el SDK de Azure Storage File para acceder al compartimento y luego usar el método uploadFile para subir el archivo del blob al compartimento de archivos. Aquí hay un ejemplo de cómo hacerlo:

    const {
        ShareServiceClient,
        StorageSharedKeyCredential
    } = require("@azure/storage-file-share");
    
    const {
        BlobServiceClient
    } = require("@azure/storage-blob");
    
    async function copy() {
    
        const account = "<account-name>";
        const accountKey = "<account-key>";
    
        const blobCert = new StorageSharedKeyCredential(account, accountKey)
        const blobServiceClient = new BlobServiceClient(
            `https://${account}.blob.core.windows.net`,
            blobCert
        );
    
        const sourceContainer = blobServiceClient.getContainerClient("documents");
    
        const shareCert = new StorageSharedKeyCredential(account, accountKey);
        const shareServiceClient = new ShareServiceClient(
            `https://${account}.file.core.windows.net`,
            shareCert
        );
    
        const shareName = "files";
        const sourceFileName = "file1.png";
        const targetFileName = "file1_copy.png";
        const shareClient = shareServiceClient.getShareClient(shareName);
        const directoryClient = shareClient.getDirectoryClient("documents");
    
        const sourceBlob = sourceContainer.getBlobClient(sourceFileName);
    
        await sourceBlob.downloadToFile(sourceFileName);
    
        const content = await fs.readFile(sourceFileName);
    
        const fileClient = directoryClient.getFileClient(targetFileName);
    
        await fileClient.upload(content, content.length);
    
        console.log(`Archivo "${sourceFileName}" copiado a "${shareName}/${targetFileName}"`);
    
    }
    
    copy()
    

    En este ejemplo, primero creamos un objeto de credencial tanto para el servicio de blob como para el compartimento de archivos, y luego usamos el SDK para obtener una referencia del contenedor de blobs fuente y el compartimento de archivos al que queremos copiar el archivo. Luego descargamos el archivo del contenedor de blobs usando el método downloadToFile, leemos el contenido del archivo usando el método fs.readFile y finalmente subimos el archivo al compartimento de archivos usando el método upload del cliente de archivos.

Comments are closed.