Multer.tipes возвращает данные, но ошибка в коде typescriipt - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть проблема, когда я пытаюсь req.file в методе post в моем классе, это значение, если я пытаюсь req.file.key, возвращает, но в моем коде это показывает ошибку

Property 'key' does not exist on type 'File'.

Я прочитал этот код, он работает, но я не понимаю эту ошибку

userRoutes
    .route('/')
    .post( 
        multer(multerConfig).single('file'),
        async (req: Request, res: Response ): Promise<Response> => {
            try{
                let userNew = new User();
                userNew.firstName = req.body.firstName;
                userNew.lastName = req.body.lastName;
                userNew.password = req.body.password;
                userNew.fotoKey = req.file.key;
                userNew.fotoUrl = req.file.location;

В userNew.fotoKey или fotoUrl верните эти данные, но req.file.key или req.file.locatio: покажите ошибку до

мой конфиг такой:

const storageTypes = {
    local: multer.diskStorage({
        destination: (req, file, cb )=>{
            cb(null, path.resolve(__dirname, "..", "..", "tmp", "uploads"))
        },
        filename: (req, file, cb)=>{
            crypto.randomBytes(16, (err, hash)=>{
                if(err) cb(err,"erro")

                const fileName = `${hash.toString('hex')}-${file.originalname}`;
                cb(null,fileName)
            })
        }
    }),
    s3: multerS3({

        s3: new aws.S3(),
        bucket: 'biocateste',
        contentType: multerS3.AUTO_CONTENT_TYPE,
        acl:'public-read',
        key: (req, file: IPhoto, cb) => {
            crypto.randomBytes(16, (err, hash)=>{
                if(err) cb(err,"erro")
                const fileName = `${hash.toString('hex')}-${file.originalname}`;
                cb(null,fileName)
            })
        },
    }),
}


export default {
    dest: path.resolve(__dirname, "..", "..", "tmp", "uploads"),
    storage: storageTypes['s3'],
    limits:{
        fileSize: 2 * 1024 * 1024,
    },
    fileFilter:(req: any , file:any, cb:any)=>{
        const allowedMimes = [
            "image/jpeg",
            "image/pjpeg",
            "image/png",
            "image/gif"
        ];

        if(allowedMimes.includes(file.mimetype)) {
            cb(null, true);
        } else {
            cb(new Error("Invalid file type."));
        }
    }  

}

извините, о моем английском sh, и заправляю вас - я из другой страны

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...