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.

La carga de amazon s3 está tomando tiempo.

Estoy intentando subir un archivo a S3, antes de eso estoy modificando el nombre del archivo. Ahora estoy aceptando 2 archivos del objeto de form-data de la solicitud, renombrando el nombre de archivo y subiendo el archivo a S3. Al final de la tarea, necesito devolver la lista de archivos renombrados que se han cargado correctamente.

Estoy utilizando la función S3.upload(). Pero el problema es, la variable que se asigna como matriz vacía inicialmente, que contendrá la lista de archivos renombrados, devuelve una respuesta vacía. La función s3.upload() está tardando mucho tiempo. ¿Hay alguna solución probable donde pueda almacenar el nombre del archivo si la carga es exitosa y devolver esos nombres en la respuesta?

Por favor, ayúdame a solucionar esto. El código se ve así,

if (formObject.files.document && formObject.files.document.length > 0) {
    const circleCode = formObject.fields.circleCode[0];
    let collectedKeysFromAwsResponse = [];
    formObject.files.document.forEach(e => {
        const extractFileExtension = ".pdf";
        if (_.has(FILE_EXTENSIONS_INCLUDED, _.lowerCase(extractFileExtension))) {
            console.log(e);
            //change the filename
            const originalFileNameCleaned = "limpieza de lógica de nombre";
            const _id = mongoose.Types.ObjectId();
            const s3FileName = "convención de nombres de archivo s3";
            console.log(e.path, "", s3FileName);
            const awsResponse = new File().uploadFileOnS3(e.path, s3FileName);
            if(e.hasOwnProperty('ETag')) {
                collectedKeysFromAwsResponse.push(awsResponse.key.split("/")[1])
            }
        }
    });
};
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Puedes intentar el siguiente enfoque:

    1. Crea un array para almacenar la lista de archivos renombrados.
    2. Itera a través del array formObject.files.document y extrae la extensión del archivo.
    3. Si la extensión del archivo está incluida en el array FILE_EXTENSIONS_INCLUDED, limpia el nombre original del archivo y genera un nuevo nombre de archivo.
    4. Utiliza la función File.uploadFileOnS3() para cargar el archivo en S3.
    5. Si la carga es exitosa, almacena la awsResponse.key en el array creado en el paso 1.
    6. Devuelve el array que contiene la lista de archivos renombrados.

Comments are closed.